
Разработал приложение для Android: прием заказов покупателей с автоматической синхронизацией товаров, контрагентов и их долгов в 1С Предприятие 8.2…
Выкладывать на тестирование или не стоит? 🙂
Интернет-сервис имеет небольшую утилиту по генерации штрихкодов. Как сгенерировать картинку штрихкода для табличного документа в 1С Предприятие 8.2? Просто… ниже указан код, который позволит это сделать. Проверял работу на Windows 7.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
Функция ПолучитьКартинку(КодТовара,УникИдентТовара)Экспорт Попытка WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); //WinHttpRequest Stream = Новый COMОбъект("ADODB.Stream"); //Stream (ADO) Адрес = "http://www.calc.ru/generator-shtrikh-kodov/download.php?code="+КодТовара+"&type=code128"; //Адрес = "http://barcode.tec-it.com/barcode.ashx?translate-esc=off&data="+КодТовара+"&code=ISBN13&unit=Fit&dpi=96&imagetype=Gif&rotation=0&color=000000&bgcolor=FFFFFF&qunit=Mm&quiet=0"; //Адрес = "https://www.barcodesinc.com/generator_files/image.php?code="+КодТовара+"&style=196&type=C128B&width=200&height=60&xres=2&font=3"; FileName = КаталогВременныхФайлов()+УникИдентТовара+".png"; WinHttp.Open("GET", Адрес, Ложь); WinHttp.Send(); Если WinHttp.Status = 200 Тогда Stream = Новый COMОбъект("ADODB.Stream"); Stream.Type = 1; Stream.Mode = 3; Stream.Open(); Stream.Write(WinHttp.ResponseBody); Stream.SaveToFile(FileName, 2); Stream.Close(); Stream = Неопределено; Возврат FileName; Иначе Сообщить("HTTP " + WinHttp.Status + " " + WinHttp.StatusText); Возврат FileName; КонецЕсли; Исключение Сообщить("Ошибка подключения к серверу! Проверьте интернет-соединение! |"+ОписаниеОшибки()); Возврат ""; КонецПопытки; КонецФункции |
В закомментированом коде хранится ссылка на подобные сервисы, но они там с приколами, а потому я не брал их во внимание. В результате работы функции мы получим путь к сохраненному файлу с готовой картинкой в формате PNG. Файл будет сохранен во временный каталог.
«COMОбъект(«ADODB.Stream»)» используется в качестве инструмента для сохранения файла как результата запроса на сервер сервиса генерации.
«УникИдентТовара» — уникальный идентификатор номенклатуры в базе данных необходим для присвоения уникального имени файла картинки штрихкода.
«КодТовара» — штрихкод в любом формате. У меня был EAN13.
Часто бывает ситуация, когда необходимо организовать осуществление подбора товара в табличную часть документа. Во всех стандартных документах этот механизм уже организован, а вот что касается созданных программистом при внедрении какой-либо новой разработки, то это уже труднее. Если программист добавил новый документ в типовую конфигурацию, то как правило в этом документе подбор пишется вручную, хотя это можно сделать и так как я внизу напишу, используя типовую обработку «Подбор номенклатуры».
Процедура вызова окна подбора:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
Процедура ДействиеПодбор() СписокВидовПодбора = Новый СписокЗначений; СписокВидовПодбора.Добавить(, "По справочнику"); СтруктураПараметровПодбора = Новый Структура; СтруктураПараметровПодбора.Вставить("Команда" , ""); СтруктураПараметровПодбора.Вставить("СписокВидовПодбора", СписокВидовПодбора); СтруктураПараметровПодбора.Вставить("Заголовок" , "Подбор товаров"); СтруктураПараметровПодбора.Вставить("ЕстьКоличество" , Истина); СтруктураПараметровПодбора.Вставить("ЕстьЦена" , Ложь); СтруктураПараметровПодбора.Вставить("ЕстьСерия" , Ложь); СтруктураПараметровПодбора.Вставить("Склад" , Неопределено); СтруктураПараметровПодбора.Вставить("ВалютаДокумента" , Валюта); СтруктураПараметровПодбора.Вставить("ВалютаЦены" , Валюта); // Открываем форму подбора. ФормаПодбора = Обработки.ПодборНоменклатуры.ПолучитьФорму("ОсновнаяФорма", ЭтаФорма, ЭтаФорма); ФормаПодбора.ОбработкаОбъект.СтруктураИсходныхПараметров = СтруктураПараметровПодбора; ФормаПодбора.Открыть(); КонецПроцедуры // ДействиеПодбор() |
В параметрах функции «ПолучитьФорму» разработчик указывает к какому объекту формы мы отправим результат выбора в форме подбора. В нашем случае результат мы отправляем всей родительской форме «ЭтаФорма», а вот в обработчике этой формы уже обрабатываем в зависимости от типа команды в структуре параметров отбора (СтруктураПараметровПодбора.Вставить(«Команда» , «»)). В нашем случае эта команда не обрабатывается из наличия только одной табличной части в документе, но вот если бы было более. тогда пришлось бы использовать параметр «Команда». 🙂
Читать далее…
Вот как можно сравнивать даты в 1С Предприятие 8.2.
|
|
Если ДатаНачала = '00010101000000' И ДатаОкончания = '00010101000000' Тогда ОписаниеПериода = НСтр( "ru='Период не установлен';uk='Період не встановлено'", КодЯзыкаПечать); КонецЕсли; |
Именно значение переменной «ДатаНачала» и является пустым значением: ‘00010101000000’. Особенность записи в том, что оно записывается в одинарных кавычках… Кстати, функция НСтр предназначена для вывода строки в нужной нам языковой раскладке, в зависимости от языка печатной формы…
Бывает ситуация, когда на сайт невозможно выгрузить большое количество товаров из 1С и сервер просто падает из-за перегрузки. Памяти не хватает и все такое… Для этого в 1С Предприятие есть удобная штука — разбивка обмена с сайтом на части с помощью планов обмена.
Изначально настройка выгрузки товаров на сайт выглядит следующим образом:

Окно настройки планов обмена с сайтом
Для корректной выгрузки товаров нам необходимо разбить большое количество товаров на малые части размеров примерно в 2000 штук. В моем случае в тестовой базе общее количество товаров было чуть больше чем 12000 товаров. Для этого необходимо сделать как минимум 5 узлов для обмена (12000/2000 = 6, но я беру 5 узлов). В теории можно разбивать на столько узлов, сколько сможет потянуть сайт при получении данных. Кнопкой добавить мы добавляем пару обменов, внимательно соблюдая уникальность кодов в узлах.
Читать далее…
Создать пустую базу с идентичной конфигурацией из бекапа, если бекап старый, и заменить все записи таблицы Config в поврежденной базе на записи из такой же таблицы в пустой базе. Для этого необходимо очистить таблицу Config в поврежденной базе:
DELETE [baza_sklad].[dbo].[Config], где [baza_sklad] — имя поврежденной базы данных.
Скопировать таблицу с данными из тестовой базы:
INSERT INTO [baza_sklad].[dbo].[Config] SELECT * FROM [baza_test].[dbo].[Config]
После записи новых данных очитстите кеш 1С предприятие и запустите конфигуратор.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладах.Период, | ТоварыНаСкладах.Регистратор, | ТоварыНаСкладах.Номенклатура, | СУММА(ТоварыНаСкладах.Количество) КАК Количество |ИЗ | РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах |ГДЕ | ТоварыНаСкладах.Период МЕЖДУ &ДатаНачала И &ДатаКонца | И ТоварыНаСкладах.Номенклатура В ИЕРАРХИИ (&Номенклатура) | И ТоварыНаСкладах.Регистратор.Подразделение = &Подразделение | И ТоварыНаСкладах.Регистратор ССЫЛКА Документ.СписаниеТоваров | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладах.Регистратор, | ТоварыНаСкладах.Период, | ТоварыНаСкладах.Номенклатура"; |
Бывает, что в запросе может быть реквизит составного типа, а надо отобрать только тот тип документов, который необходим по условиям. Это делается с помощью слова «ССЫЛКА» в запросе.