Автор: Павел Грибов
Собственная реализация функционала печати чеков по 54-ФЗ из 1С Розница 2.2
Собственно причиной сподвигнувшей меня на написание данного «велосипеда» послужило то, для того чтобы распечатался полноценный чек из 1С, не используюя РМК, нужно очень много телодвижений от менеджера. А именно: создать документ реализации, на основании его создать документ «Чек» или «ПКО». Если печатать чек прямо из документа реализации, то в чеке выходят не понятные надписи «Кредит». » Читать далее
1C 8.3 : нельзя изменять поле содержащее объект данных формы
Ошибка возникает при следующем коде:
1 2 3 4 5 6 7 8 |
&НаСервере Процедура ПробитьЧекНаСервереГрибов(документ) ОбщийМодульГрибов.ЗаписатьВБазуMySQLДокумент(документ); КонецПроцедуры &НаКлиенте Процедура ПробитьЧек(Команда) ПробитьЧекНаСервереГрибов(Объект); КонецПроцедуры |
Почему? Дело в том, что в параметре процедуры ПробитьЧекНаСервереГрибов(Объект) мы передаём данные формы с типом ДанныеФормыКоллекция, и потом на сервере пытаемся их изменить.Даже если эти данные мы не меняем внутри процедуры, 1С на всякий случай ругнется.. Чтобы этого избежать, достаточно изменить код так:
1 2 3 4 5 |
&НаКлиенте Процедура ПробитьЧек(Команда) ддк=Объект; ПробитьЧекНаСервереГрибов(ддк); КонецПроцедуры |
Поиск документа 1С по номеру документа
В некоторых видах документов, которые имеют периодическую нумерацию, например РеализацияТоваровИУслуг, при поиске документа по номеру, нужно указывать дату (период), к которому этот документ относится. Мелочь, а 15 минут потратил, на то чтоб понять почему не возвращает без этого параметра ссылку на документ 😉
1 2 |
док= Документы.РеализацияТоваров.НайтиПоНомеру("ИП00-008198",ТекущаяДата()); сообщить(док); |
Работа с MySQL из 1С в среде Windows
Для работы необходимо предварительно установить среду Visual studio 2015 redistributable и ODBC драйвер Mysql
Далее работаем из 1С с драйвером на прямую:
1) Установка соединения:
1 2 3 4 5 6 7 8 |
ИмяODBC = "noc.уцкаука.ru"; ИмяБазы = "ыаукаыук"; ИмяПользователя = "укаыука"; Пароль = "ыукаыука"; Connection = Новый COMОбъект("ADODB.Connection"); СтрокаПодключения = "DRIVER={MySQL ODBC 8.0 Unicode Driver};DATABASE=" + ИмяБазы + ";PWD=" + Пароль + ";PORT=3306;SERVER=" + ИмяODBC + ";UID=" + ИмяПользователя + ";"; Connection.Open(СокрЛП(СтрокаПодключения)); |
Выборка:
1 2 3 4 5 6 7 |
Запрос="select * from users"; Table = Connection.Execute(Запрос); Пока Table.EOF() = 0 Цикл Сообщить(Table.Fields("login").Value); Table.MoveNext(); КонецЦикла; Table.Close(); |
Выполнение запроса:
1 2 3 |
Запрос="insert into checks_1c (id,docnum,dt,goods,cost,seller,inn,kassa,type_pay,type_sell,result,cnt,summ) values (null,'"+Документ.Номер+"',now(),'"+ном+"',"+цена+",'"+продавец+"','"+инн+"',"+касса+","+ТипОплаты+","+ВидЧека+",9,"+количество+","+сумма+")"; //Сообщить(Запрос); РезультатЗапроса = Connection.Execute(Запрос); |