В общем была проблема: при запуске 1С Предприятие 8.3 зависало окно программы со стороны пользователя. При том, что конфигуратор работал вроде нормально. Проблема была в том, что технология записи журнала транзакций была не совершенна и возникала ошибка, которая приводила к полному отказу работы платформы 1С Предприятие.
Исправление проблемы:
1. Остановить службу сервера 1С Предприятие в апплете служб Windows.
2. Пройти в каталог с настройками кластера серверов по пути: C:\Program Files (x86)\1cv8\srvinfo\reg_1541\. Далее найти папку с логами базы данных, которая “зависает”. Определить её можно по идентификатору базы данных. Каталог с таки идентификатором будет идентичен идентификатору базы данных. Далее переместить каталог с логами базы данных в отдельный каталог.
3. Запустить службу 1С Предприятие в апплете служб Windows.
4. Убедится, что в каталоге кластера автоматически создались файлы логов.
5. Запустить платформу 1С Предприятие и начать работать.
6. Исследовать ошибку логирования на предмет ошибок дискового накопителя. Вполне может быть, что это повреждения накопителя. Это на всякий случай…
Признаться, я особо не исследовал причину появления такой проблемы. Логирование мне не было нужды хранить, а потому я просто удалил старые архивы журнала транзакций.
Парсить сайты – это всегда сложно. Написать универсальный парсер сайтов практически нереально. Я пару дней делал обработку, которая может принимать данные XML из программы Elbuz Content Creator и Elbuz PriceList Importer. Это могут быть каталог товаров, прайс лист цен поставщиков или конкурентов.
Так вот, я столкнулся с такой штукой. Если парсить сайты с помощью 1С, то это может закончится тем, что Вы не сможете это сделать из-за некоторых приколов с самим контентом. У меня произошел случай, когда в контенте попались символы BEL , DC2 , RS.
1С способна сама читать XML-файлы. Но именно с этими символами она ни в какую не хотела принимать данные. Эти символы не видны и лишь Notepad++ способен отобразить их в тексте через отображение всех символов, включая перевод каретки и прочие.
Символ BEL в недавнем времени один из самых используемых символов. Обычно, когда консоль встречала символ с кодом 7 (0×07), то выдавала звуковой сигнал.
Символ RS является разделителем записей в потоке данных. Этот символ вообще не выводится как визуальный символ, а лишь вызывает команду.
Символ DC2 – одна из команд управления устройством для чтения перфолент. Символ DC2 подает команду на включение перфоратора.
Исходя из выше написанного, можно с уверенностью сказать, что если Вы наставите этих символов в тексте описания товара, то такой текст спарсить в 1С не удастся

По идее, если брать обычный документ в 1С Предприятие, то можно добавить реквизит “Остаток” и туда заполнять каждый раз значение остатка номенклатуры на складе, но так делать неправильно: при каждом открытии документа будет осуществляться заполнение реквизита текущими значениями остатка на складе. Это приведет к тому, что документ каждый раз при закрытии придется перезаписывать, что по сути неправильно. Для этого необходимо в табличную часть добавить колонку, которая не будет связана с данными документа.
В моем примере я добавляю сразу несколько колонок про остатки для каждого склада по отдельности, включая резерв на выбранных складах в табличную часть списка подбора номенклатуры. Менеджеру удобнее видеть сразу все остатки по товарам, не прибегая к отчету “Ведомость остатков по складах” для того ,что узнать каково наличие на складе. Все сразу видно. Читать далее…
На форме элемента справочника имеется несколько реквизитов: Красный, Зеленый, Синий (число: неотрицательное, с диапазоном от 0 до 255).
При выборе цвета значения цвета в формате RGB заполняются в реквизиты элемента и записываются в справочник для хранения.
Процедура выбора цвета использует форму объекта COMОбъект(“WScript.Shell”) для выбора цвета.
|
Шел = Новый COMОбъект("WScript.Shell"); Шел.RegWrite("HKLM\SOFTWARE\Classes\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905\","gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj"); Диалог = Новый COMОбъект("MSComDlg.CommonDialog"); Диалог.ShowColor(); Скрипт = Новый COMОбъект("MSScriptControl.ScriptControl"); Скрипт.language = "javascript"; Скрипт.AddObject("Диалог",Диалог); Цвет = РазложитьRGB(Скрипт.Eval("Диалог.Color")); Красный = Цвет.Красный; Зеленый = Цвет.Зеленый; Синий = Цвет.Синий; |
После выбора цвет раскладывается по принципу RGB на три составляющие в числовом выражении и записывается в реквизиты. Функция РазложитьRGB() помогает получить три числа цвета и сформировать объект Цвет(), возвращая как результат своей работы.
|
Функция РазложитьRGB(ЗначениеЧислом) ЦветRGB = ЗначениеЧислом; R = ЦветRGB%256; G = (Цел(ЦветRGB/256))%256; B = (Цел(ЦветRGB/(256 * 256)))%256; Возврат Новый Цвет(R,G,B); КонецФункции |

Проблема очень простая. Как правило, это касается базы, которые были выгружены в файл через пункт меню “Выгрузить информационную базу”. Далее пользователь переносит этот файл с расширением *.dt в иное место или на другой компьютер. После запуска конфигуратора в другой конфигурации пытается загрузить файл с данными через пункт меню “Загрузить информационную базу”, но в результате получает ошибку с сообщением “Неверный формат файла для загрузки информационной базы”.
Решение: просто обновите версию платформы 1С Предприятие до той версии платформы, которая была на компьютере в момент выгрузки базы данных в файл. Например, у Вас есть компьютер. на нем установлена платформа 1С Предприятие версии 8.2.17.169, выгрузили базу, на другой компьютер ставим такую же версию платформы или более новую. Скажем, 8.3.7.1776. При таких манипуляциях все будет ок.
Скорее всего в структуре файла выгрузки произошли изменения и старые версии платформы не могут выгружать по новому формату. Вот и все!

Произошел случай, когда фискальный регистратор на машине клиента начал выделываться и просто “завис”. После пары минут взял и выдал на чек всю информацию о закрытии смены: список товаров за день и выручку… В общем отработал нормально, но документ “выемка денег” правильно не была сформирован и кассир не смог сделать выдачу денег из кассы ККМ, как это привык делать всегда.
Пару минут и я сделал документ для формирования документа “Выемка денежных средств из кассы ККМ” для того, что бы можно было нормально закрыть кассу “под ноль” со стороны кассира.
Обработка которая создает или изменяет эти документы написана на управляемых формах под конфигурацию “Управление Торговлей для Украины 2.0″.
В общем кому надо – пользуйтесь!
Выемка денежных средств для УТ Украина 2.0
Праздники – это всегда круто! Самое главное, что бы в новом году все были живы и здоровы, побольше любви и всего самого лучшего! Всем моим читателям и клиентам желаю успеха бизнесе и в семейном очаге! Желаю мира и добра, побольше верных друзей и чистого счастья!
Всем-всем добра, даже их соседям!
Я, кстати, с помощью хорошего человека – Alex Black смог приукрасить свой блог в шапке красивыми шариками и ёлочками.
Ему спасибо! Так что если Вам необходимо, что-то усовершенствовать на сайте – пишите ему и он всегда сделает это толково и качественно!

Разработал приложение для 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
|
Процедура ДействиеПодбор() СписокВидовПодбора = Новый СписокЗначений; СписокВидовПодбора.Добавить(, "По справочнику"); СтруктураПараметровПодбора = Новый Структура; СтруктураПараметровПодбора.Вставить("Команда" , ""); СтруктураПараметровПодбора.Вставить("СписокВидовПодбора", СписокВидовПодбора); СтруктураПараметровПодбора.Вставить("Заголовок" , "Подбор товаров"); СтруктураПараметровПодбора.Вставить("ЕстьКоличество" , Истина); СтруктураПараметровПодбора.Вставить("ЕстьЦена" , Ложь); СтруктураПараметровПодбора.Вставить("ЕстьСерия" , Ложь); СтруктураПараметровПодбора.Вставить("Склад" , Неопределено); СтруктураПараметровПодбора.Вставить("ВалютаДокумента" , Валюта); СтруктураПараметровПодбора.Вставить("ВалютаЦены" , Валюта); // Открываем форму подбора. ФормаПодбора = Обработки.ПодборНоменклатуры.ПолучитьФорму("ОсновнаяФорма", ЭтаФорма, ЭтаФорма); ФормаПодбора.ОбработкаОбъект.СтруктураИсходныхПараметров = СтруктураПараметровПодбора; ФормаПодбора.Открыть(); КонецПроцедуры // ДействиеПодбор() |
В параметрах функции “ПолучитьФорму” разработчик указывает к какому объекту формы мы отправим результат выбора в форме подбора. В нашем случае результат мы отправляем всей родительской форме “ЭтаФорма”, а вот в обработчике этой формы уже обрабатываем в зависимости от типа команды в структуре параметров отбора (СтруктураПараметровПодбора.Вставить(“Команда” , “”)). В нашем случае эта команда не обрабатывается из наличия только одной табличной части в документе, но вот если бы было более. тогда пришлось бы использовать параметр “Команда”.
Читать далее…
Свежие комментарии