Использование JSON в 1С

Для чтения объекта JSON самое простое что можно сделать — превратить его в Структуру:

ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(Ответ);
Результат = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();

Для записи JSON, например, списка

Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
Запись.ЗаписатьНачалоМассива();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
          Запись.ЗаписатьНачалоОбъекта();
          Запись.ЗаписатьИмяСвойства(«id»);

          Запись.ЗаписатьЗначение( Выборка.Номенклатура.УникальныйИдентификатор());
          Запись.ЗаписатьИмяСвойства(«name»);
          Запись.ЗаписатьЗначение(Выборка.Наименование);
          Запись.ЗаписатьКонецОбъекта();
КонецЦикла;
Запись.ЗаписатьКонецМассива();
Результат = Запись.Закрыть();

результат в виде строки будет в переменной Результат.

Ошибка в 1С УТ11: Ошибочное значение параметра «Склад»

При проведении документа «Поступление товаров и услуг» возникает ошибка

Ошибочное значение парамера «Склад»

Самое забавное, что в тексте ошибки опечатка. И разработчики 1С могут ошибаться 😉

Но перейдем к сути, ошибка может возникать из-за того, что у номенклатуры не заполнено поле Тип номенклатуры или в документе выбраны группы, а не элементы справочника Номенклатура. Да, так бывает, когда содержимое документа загружается универсальной обработкой непонятно откуда взятой пользователем.

Проверяйте содержимое табличной части Товары.

СообщениеПользователю для табличной части

Когда делается проверка заполнения табличной части, например, документа, сообщать пользователю о не заполненных данных через функцию Сообщить() не правильно. Ведь пользователю придется глазами искать строку, где нет данных. Лучше всего для этого использовать объект СообщениеПользователю.

Пример использование этого объекта:

Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = «Данные по продажам не заполнены!»;
Сообщение.Поле = «Объект.Товары[10].Продажи»;
Сообщение.УстановитьДанные(Объект);
Сообщение.Сообщить();

в типовых конфигурациях, например, 1С УТ 11, можно использовать упрощенный вызов из общего модуля

Для каждого Эл Из Объект.Товары Цикл
        Если Эл.Продажи = 0 И Эл.Остаток = 0 Тогда
                ОбщегоНазначенияКлиентСервер.СообщитьПользователю(«В строке » + Эл.НомерСтроки + » нет данных ни по продажам, ни по остаткам!»,, ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти(«Объект.Товары», Эл.НомерСтроки, «Продажи»),, Отказ);
        КонецЕсли;
КонецЦикла;

Связи параметров выбора или как связать поля ввода на форме

Если на форме два поля, один из которых подчинён другому по структуре данных, то часто бывает необходимо ограничить ввод данных по владельцу. Например, есть поле Партнёр и Вид цены поставщика.

Для того, чтобы в поле Вид цены поставщика автоматически выбирались только данные выбранного Партнера, необходимо в свойстве СвязиПараметровВыбора поля Вид цены поставщика сделать настройку Отбор.Владелец(Объект.Партнер).

Проблема в том, что это не совсем очевидно. Ведь в дереве свойств конфигуратора в это поле нельзя ввести данные, это нужно делать через вспомогательную форму.

Связи параметров выбора

Связи параметров выбора

Теперь необходимо в колонке Имя вместо Партнер ввести текст Отбор.Владелец. Задача выполнена!