К примеру для формирования макета договра необходимы Юр. адреса и номера телефонов сторон:
// ...
ДанныеОрганизации = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеДоговора.Организация, ТекущаяДата());
ДанныеКонтрагента = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеДоговора.Контрагент, ТекущаяДата());
ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
// ...
ОбластьРеквизиты.Параметры.ЮридическийАдресОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеОрганизации, "ЮридическийАдрес");
ОбластьРеквизиты.Параметры.ТелефонОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеОрганизации, "Телефоны");
ОбластьРеквизиты.Параметры.ЮридическийАдресКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеКонтрагента, "ЮридическийАдрес");
ОбластьРеквизиты.Параметры.ТелефонКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеКонтрагента, "Телефоны");
// ...
Через метод ФормированиеПечатныхФорм.ОписаниеОрганизации можно получить: ПолноеНаименование, ИНН, КПП, ФактическийАдрес, Телефоны, НомерСчета, Банк, БИК, КоррСчет и т.д. Все данные контрагента или организации.
Заполнить данные организации по ИНН
В предыдущей записи, я показал как можно легко пользоваться сервисом dadata для получения данных организации на Python. Теперь хотелось бы попробовать использовать это в 1С для быстрого добавления контрагентов.
Форма 1С
Для экспериментов подготовил такую форму для заполнения
Запрос, обработка, код
Добавил кнопку «Поиск по ИНН» и создаю отдельную функцию для POST запроса.
&НаКлиенте
Функция ПоискПоИНН(ИНН)
Попытка
АдресСервера = «suggestions.dadata.ru»;
URL = «/suggestions/api/4_1/rs/suggest/party»;
HTTPЗапрос = Новый HTTPЗапрос(URL);
HTTPЗапрос.Заголовки.Вставить(«Content-Type», «application/json»);
HTTPЗапрос.Заголовки.Вставить(«Accept», «application/json»);
HTTPЗапрос.Заголовки.Вставить(«Authorization», «Token API»);
JSONСоответствие = «{ «»query»»: «»[«+ИНН+»]»» }»;
HTTPЗапрос.УстановитьТелоИзСтроки(JSONСоответствие, КодировкаТекста.UTF8);
HTTPСоединение = Новый HTTPСоединение(АдресСервера, 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
ОтветDaData = HTTPОтвет.ПолучитьТелоКакСтроку();
Возврат ОтветDaData;
Исключение
Сообщить(«Сбой»);
КонецПопытки;
В ответ получаю строку следующего содержания:
Пример строки ответа
{«suggestions»:[{«value»:»АО »СПУТНИКТЕЛЕКОМ»»,»unrestricted_value»:»АО »СПУТНИКТЕЛЕКОМ»»,»data»:{«kpp»:»027801001″,»capital»:null,»management»:{«name»:»Кечкин Дмитрий Михайлович»,»post»:»ГЕНЕРАЛЬНЫЙ ДИРЕКТОР»,»disqualified»:null},»founders»:null,»managers»:null,»predecessors»:null,»successors»:null,»branch_type»:»MAIN»,»branch_count»:0,»source»:null,»qc»:null,»hid»:»0e7ec1cec84605548fb7d460ef732f6761c503939bf760c4c478a437354ff203″,»type»:»LEGAL»,»state»:{«status»:»ACTIVE»,»code»:null,»actuality_date»:1597795200000,»registration_date»:1084320000000,»liquidation_date»:null},»opf»:{«type»:»2014″,»code»:»12267″,»full»:»Непубличное акционерное общество»,»short»:»НАО»},»name»:{«full_with_opf»:»АКЦИОНЕРНОЕ ОБЩЕСТВО »СПУТНИКОВЫЕ ТЕЛЕКОММУНИКАЦИИ БАШКОРТОСТАНА»»,»short_with_opf»:»АО »СПУТНИКТЕЛЕКОМ»»,»latin»:null,»full»:»СПУТНИКОВЫЕ ТЕЛЕКОММУНИКАЦИИ БАШКОРТОСТАНА»,»short»:»СПУТНИКТЕЛЕКОМ»},»inn»:»0278101668″,»ogrn»:»1040204598268″,»okpo»:»55826052″,»okato»:»80401390000″,»oktmo»:»80701000001″,»okogu»:»4210014″,»okfs»:»42″,»okved»:»61.20″,»okveds»:null,»authorities»:null,»documents»:null,»licenses»:null,»finance»:{«tax_system»:null,»income»:null,»expense»:null,»debt»:null,»penalty»:null},»address»:{«value»:»г Уфа, ул Сагита Агиша, д 1/3″,»unrestricted_value»:»450078, Респ Башкортостан, г Уфа, Советский р-н, ул Сагита Агиша, д 1/3″,»data»:{«postal_code»:»450078″,»country»:»Россия»,»country_iso_code»:»RU»,»federal_district»:»Приволжский»,»region_fias_id»:»6f2cbfd8-692a-4ee4-9b16-067210bde3fc»,»region_kladr_id»:»0200000000000″,»region_iso_code»:»RU-BA»,»region_with_type»:»Респ Башкортостан»,»region_type»:»Респ»,»region_type_full»:»республика»,»region»:»Башкортостан»,»area_fias_id»:null,»area_kladr_id»:null,»area_with_type»:null,»area_type»:null,»area_type_full»:null,»area»:null,»city_fias_id»:»7339e834-2cb4-4734-a4c7-1fca2c66e562″,»city_kladr_id»:»0200000100000″,»city_with_type»:»г Уфа»,»city_type»:»г»,»city_type_full»:»город»,»city»:»Уфа»,»city_area»:null,»city_district_fias_id»:null,»city_district_kladr_id»:null,»city_district_with_type»:»Советский р-н»,»city_district_type»:»р-н»,»city_district_type_full»:»район»,»city_district»:»Советский»,»settlement_fias_id»:null,»settlement_kladr_id»:null,»settlement_with_type»:null,»settlement_type»:null,»settlement_type_full»:null,»settlement»:null,»street_fias_id»:»800447c8-0b83-4910-8519-420a3cc01150″,»street_kladr_id»:»02000001000078700″,»street_with_type»:»ул Сагита Агиша»,»street_type»:»ул»,»street_type_full»:»улица»,»street»:»Сагита Агиша»,»house_fias_id»:»05d8eaf1-b560-44d1-be3f-c7da3ec8f40a»,»house_kladr_id»:»0200000100007870064″,»house_type»:»д»,»house_type_full»:»дом»,»house»:»1/3″,»block_type»:null,»block_type_full»:null,»block»:null,»flat_fias_id»:null,»flat_type»:null,»flat_type_full»:null,»flat»:null,»flat_area»:null,»square_meter_price»:null,»flat_price»:null,»postal_box»:null,»fias_id»:»05d8eaf1-b560-44d1-be3f-c7da3ec8f40a»,»fias_code»:»02000001000000007870064″,»fias_level»:»8″,»fias_actuality_state»:»0″,»kladr_id»:»0200000100007870064″,»geoname_id»:»479561″,»capital_marker»:»2″,»okato»:»80401390000″,»oktmo»:»80701000001″,»tax_office»:»0278″,»tax_office_legal»:»0278″,»timezone»:»UTC+5″,»geo_lat»:»54.7296804″,»geo_lon»:»55.9942948″,»beltway_hit»:null,»beltway_distance»:null,»metro»:null,»qc_geo»:»0″,»qc_complete»:null,»qc_house»:null,»history_values»:null,»unparsed_parts»:null,»source»:»450078, РЕСПУБЛИКА БАШКОРТОСТАН, ГОРОД УФА, УЛИЦА САГИТА АГИША, 1, 3″,»qc»:»0″}},»phones»:null,»emails»:null,»ogrn_date»:1084320000000,»okved_type»:»2014″,»employee_count»:null}}]}
Далее в действиях кнопки уже работаю с этой строкой: Убираю лишние символы, вытаскиваю нужные значения. В этом плане помог пример с сайта
Результат
В результате получаю рабочую кнопку при нажатии которой заполняются необходимые поля.
06.06.13 — 13:40
День добрый.
Подскажите, как получить реквизиты банка контрагента. Где они хранятся?
1 — 06.06.13 — 13:40
позвонит в банк
2 — 06.06.13 — 13:41
В конфигурации 1с:ЗиКнет банковских счетов…
3 — 06.06.13 — 13:42
какая конфигурация то хоть?
4 — 06.06.13 — 13:44
В форме справочника Контрагенты есть вкладка «Счета и договоры», реквизиты банков (р/с, БИК и т.д.) лежат там, но как их изъять (надо для печатной формы)
5 — 06.06.13 — 13:44
8.2
6 — 06.06.13 — 13:45
ой-ёё…
Открой код и посмотри, откуда они берутся…
7 — 06.06.13 — 13:45
(5) Зашибись!
8 — 06.06.13 — 13:49
Адрес приходится запросом получать. Тут может и сбанком так? ГДЕ ЛЕЖАТ ЭТИ ДАННЫЕ? В самом справочнике «Контрагенты» нет их. В другом справочнике? В регистре сведений?
9 — 06.06.13 — 13:51
спр. банковские счета
10 — 06.06.13 — 13:54
(8) Ты это конфигурацию назвать можешь?
Справка >> О программе.
Типа такого «Управление производственным предприятием для Украины», редакция (1.3.21.2) или «Бухгалтерия для Украины», редакция (1.2.13.4)
11 — 06.06.13 — 13:56
Как связаны спр Контрагенты и спр Банковские счета?
12 — 06.06.13 — 13:58
(11) Где?
13 — 06.06.13 — 13:59
1С:Предприятие 8.2 (8.2.16.363)
14 — 06.06.13 — 13:59
(11) Веревкой.
15 — 06.06.13 — 14:00
(13) ты реально тупой или тролишь?
16 — 06.06.13 — 14:02
(15) Завали…
17 — 06.06.13 — 14:02
Хрен с вами, сам найду…
18 — 06.06.13 — 14:04
(11) Скорей всего они по владельцу связаны. А владельцем в справочнике счетов является контрагент.
19 — 06.06.13 — 14:12
ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, «ЮридическийАдрес,Телефоны,/,КодПоЕДРПОУ,КодПоДРФО,ИНН,НомерСвидетельства,/,ИнформацияОСтатусеПлательщикаНалогов,»,,КодЯзыкаПечать);
20 — 06.06.13 — 15:58
Всего то и требовалось:
Запрос.УстановитьПараметр(«Контрагент»,Контрагент);
Запрос.Текст = «ВЫБРАТЬ
| БанковскиеСчета.Банк,
| БанковскиеСчета.БанкДляРасчетов,
| БанковскиеСчета.Владелец.Ссылка
|ИЗ
| Справочник.БанковскиеСчета КАК БанковскиеСчета
|ГДЕ
| БанковскиеСчета.Владелец.Ссылка = &Контрагент»;
21 — 06.06.13 — 16:40
Кому требовалось?
Из семи стоящих у меня конфигураций это может сработать только в «Бухгалтерия для Украины», редакция 1.1. и «Бухгалтерия для Украины», редакция 1.2.
Или тебе должны были предоставить ВСЕ возможные варианты?
22 — 06.06.13 — 16:40
(20) Зачем в запросе использована Ссылка? Лишних соединений при исполнении запроса в СУБД не хватает?
23 — 06.06.13 — 16:55
(21) В УПП тоже сработает. Думаю у ТС как раз УПП
Grobik
24 — 06.06.13 — 17:07
(23)
1) У меня не работает. ЧЯДНТ?
2) Кто его пустил к УПП?
3) Зачем отвечающему гадать, что у ТС?
Как получить реквизит от ссылочного значения на клиенте
На чтение 2 мин Просмотров 6.3к. Опубликовано 20.04.2017
На стороне клиента нельзя обратиться к данным базы, в т.ч. получить реквизит от ссылочного значения. Рассмотрим как все же можно решить эту задачу.
На стороне клиента код вида
Контрагент.ИНН
приведет к ошибке. Такие конструкции возможны только на сервере.
Предположим, что стоит задача при нажатии на кнопку отобразить ИНН контрагента, выбранного на форме. Для решения поставленной задачи необходимо обратиться на сервер для получения требуемой информации(ИНН). Программный код может иметь вид:
&НаКлиенте
Процедура ПолучитьИНН(Команда)
// Вызов серверной внеконтекстной функции
ИННКонтрагента = ПолучитьИНННаСервере(Контрагент);
Сообщить("ИНН контрагента: " + ИННКонтрагента);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьИНННаСервере(Контрагент)
Возврат Контрагент.ИНН;
КонецФункции
При нажатии на кнопку ПолучитьИНН вызывается серверная функция ПолучитьИНННаСервере(). В единственном параметре передается контрагент, выбранный интерактивно пользователем. Функция получает ИНН через точку и сразу же возвращает значение обратно на клиент. Результат работы серверной функции помещается в переменную ИННКонтрагента и выводится пользователю с помощью метода Сообщить().
Серверная функция является внеконтекстной (&НаСервереБезКонтекста). Это значит, что данные, содержащиеся в форме, не будут отсылаться на сервер, что уменьшит объем передаваемых данных и скорость возврата результата функции.
Внимание!
При работе с конфигурациями, в которые встроена библиотека стандартных подсистем, вместо получения реквизита через точку рекомендуется использовать функцию ЗначениеРеквизитаОбъекта() из общего модуля ОбщегоНазначения. Таким образом, строку
Возврат Контрагент.ИНН;
можно заменить на:
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "ИНН");
В случае, когда значение реквизита нужно только для визуального отображения пользователю, можно пойти другим путем: имеется возможность вывести реквизит от ссылочного значения на форму. При этом пользователь не сможет отредактировать этот реквизит.
Рассмотрим пример: на форме документа рядом с полем ввода контрагента должен выводиться его ИНН. Для этого перенесем реквизит ИНН на форму:
В пользовательском режиме при указании контрагента, его ИНН будет автоматически отображен на форме. Никакого программирования в этом случае не потребовалось.
vitek944 1 / 1 / 1 Регистрация: 11.11.2013 Сообщений: 103 |
||||||||
1 |
||||||||
Получение данных контактной информации02.11.2018, 13:27. Показов 34320. Ответов 14 Метки нет (Все метки)
Изучаю 1с по книге Игоря Ощенко Азбука программирования в 1с:предприятие 8.3, нужно получить адрес контрагента.
Я так понял этот код написан для НЕУПРАВЛЯЕМОЙ формы, попробовал его переписать под УФ, получилось так:
При выборе Документа в 1с выдаётся ошибка: З.Ы.: я так понимаю в Регистре Сведений Контактной информации нет. Не нашёл такой регистр
0 |
3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
|
02.11.2018, 13:29 |
2 |
vitek944, у вас запросы к совершенно разным объектам: в книге в регистру сведений, в вашей коде — к табличной части справочника Контрагенты. Там точно есть поле Объект?
0 |
1 / 1 / 1 Регистрация: 11.11.2013 Сообщений: 103 |
|
02.11.2018, 13:42 [ТС] |
3 |
GreenkA, в З.Ы. написал что обращаюсь в справочнику, т.к. регистра такого нет. А вот как узнать есть объект или нет? Литературы в инете много, а вот с толковой беда если честно.
0 |
3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
|
02.11.2018, 13:43 |
4 |
vitek944, выложите вашу конфигурацию.
0 |
1 / 1 / 0 Регистрация: 02.11.2018 Сообщений: 17 |
|
02.11.2018, 14:03 |
5 |
Сложно ответить не видя конфигурацию, м.б. в вашей конфигурации регистр КонтактнаяИнформация как-нибудь иначе называется?Посмотрите куда записывается эта информация при записи справочника, в какие регистры
0 |
vitek944 1 / 1 / 1 Регистрация: 11.11.2013 Сообщений: 103 |
||||
02.11.2018, 15:05 [ТС] |
6 |
|||
https://yadi.sk/d/c7a4agDcEfd98g Конфигурация УТ (демо). Мной добавлялись только: справочник Автомобили, Журнал и Документ «Развозка»
почему именно Объект и для чего его берут называется догадайся сам.
0 |
GreenkA 3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
||||
02.11.2018, 15:54 |
7 |
|||
Сообщение было отмечено vitek944 как решение Решение
почему именно Объект и для чего его берут называется догадайся сам. это параметр. В УТ вам достаточно передать в этот параметр ссылку на нужного Контрагента:
0 |
1 / 1 / 0 Регистрация: 02.11.2018 Сообщений: 17 |
|
02.11.2018, 15:58 |
8 |
Рядом нет компа, но “обьект” — это Измерение в РегистреСведений КонтактнаяИнформация, в котором содержится ссылка на Контрагента. Т.е. выбираются записи из регистраСведений.КонтактнаяИнформация, где измерение Объект=Ссылке, которую вы передаете при выполнении функции — Функция ПолучитьАдресКонтрагента(Объект) Вы же ищите по справочнику, в котором возможно нет поля Объект , есть реквизит “ссылка” на контрагента
1 |
3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
|
02.11.2018, 16:06 |
9 |
Hh_Anna, в УТ нет такого регистра сведений. Об этом уже написали выше. Все хранится в соответствующих табличных частях объекта.
0 |
1 / 1 / 0 Регистрация: 02.11.2018 Сообщений: 17 |
|
02.11.2018, 16:39 |
10 |
Не спорю, просто пояснила vitek944, почему в книге так написано (он писал, что не понимает “почему именно Объект и для чего его берут называется догадайся сам”
0 |
vitek944 1 / 1 / 1 Регистрация: 11.11.2013 Сообщений: 103 |
||||
06.11.2018, 11:46 [ТС] |
11 |
|||
GreenkA, Действительно, прописал КонтактнаяИнформация.Ссылка= &Объект и работает, хотя перед этим тоже самое писал, выдовало ошибку. Мистика Добавлено через 6 минут
0 |
1142 / 689 / 203 Регистрация: 22.04.2013 Сообщений: 5,159 Записей в блоге: 1 |
|
06.11.2018, 12:12 |
12 |
мммм, может тоже попробовать объект написать?
0 |
1 / 1 / 1 Регистрация: 11.11.2013 Сообщений: 103 |
|
06.11.2018, 12:16 [ТС] |
13 |
Yulunga, нет такого объекта =( пробовал уже
0 |
GreenkA 3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
||||
06.11.2018, 14:17 |
14 |
|||
выбранного в поле формы Документ т.е. есть форма, а на ней поле Документ, а у этого Документа — ТЧ Товары? Тогда
Но только на сервере
1 |
1 / 1 / 1 Регистрация: 11.11.2013 Сообщений: 103 |
|
06.11.2018, 14:40 [ТС] |
15 |
GreenkA, на сервере… точно точно) изменил с &НаКлиенте на &НаСервере и появился реквизит))
0 |
Как обойти все элементы справочника запросом 1с 8.3:
&НаСервере
Процедура ВыборкаЭлементовСправочникаЗапросом()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| ЭтоГруппа = ЛОЖЬ
|УПОРЯДОЧИТЬ ПО
| Наименование";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Ссылка);
КонецЦикла;
КонецПроцедуры
Как обойти элементы с помощью менеджера справочника 1с 8.3:
//метод: Выбрать(<Родитель>, <Владелец>, <Отбор>, <Порядок>)
СпрКонтрагентыМенеджер = Справочники.Контрагенты; //получим менеджер справочника
СпрКонтрагентыМенеджер = Справочники["Контрагенты"]; //второй вариант получения менеджера
Выборка = СпрКонтрагентыМенеджер.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
Создание и запись нового элемента справочника 1с 8.3:
//метод: СоздатьЭлемент()
НовыйОбъектКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйОбъектКонтрагент.Наименование = "ООО Ладога";
НовыйОбъектКонтрагент.Записать();
Создание и запись новой группы справочника (для иерархического справочника) 1с 8.3
//метод:СоздатьГруппу();
НовыйОбъектКонтрагент = Справочники.Контрагенты.СоздатьГруппу();
НовыйОбъектКонтрагент.Наименование = "Поставщики";
НовыйОбъектКонтрагент.Записать();
Поиск элемента справочника запросом:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Наименование", "ООО Ладога");
ТекстЗапроса = "ВЫБРАТЬ
| Клиенты.Ссылка
|ИЗ
| Справочник.Клиенты КАК Клиенты
|ГДЕ
| Клиенты.Наименование = &Наименование";
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Ссылка);
КонецЦикла;
Поиск элемента через менеджер справочника 1с 8.3:
//Если элемент найден, возвращается ссылка, иначе пустая ссылка. Если реквизит КодНаименование в справочнике не используется, возвращается Неопределено.
//методы: НайтиПоКоду(), НайтиПоНаименованию(), НайтиПоРеквизиту();
СпрКонтрагенты = Справочники.Контрагенты;
КонтрагентСсылка = СпрКонтрагенты.НайтиПоКоду("0000000001");
Если Не ЗначениеЗаполнено(КонтрагентСсылка) Тогда
Сообщить("Найден по коду: "+КонтрагентСсылка);
Иначе
Сообщить("Не найдено!");
КонецЕсли;
КонтрагентСсылка = СпрКонтрагенты.НайтиПоНаименованию("ООО Ладога");
Если Не ЗначениеЗаполнено(КонтрагентСсылка) Тогда
Сообщить("Найден по наименованию: "+КонтрагентСсылка);
Иначе
Сообщить("Не найдено!");
КонецЕсли;
КонтрагентСсылка = СпрКонтрагенты.НайтиПоРеквизиту("ИНН","12000000001");
Если Не КонтрагентСсылка.Пустая() Тогда
Сообщить("Найден по ИНН: "+КонтрагентСсылка);
Иначе
Сообщить("Не найдено!");
КонецЕсли;
Удаление элементагруппы справочника 1с 8.3:
КонтрагентСсылка = Справочники.Контрагенты.НайтиПоНаименованию("ООО Румпель");
КонтрагентОбъект = КонтрагентСсылка.ПолучитьОбъект();
//пометка удаления, элемент остается в базе:
КонтрагентОбъект.УстановитьПометкуУдаления(Истина);
//непосредственное удаление, элемент исчезает:
КонтрагентОбъект.Удалить();
Выборка элементов подчиненного справочника 1с 8.3:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Контрагент", СсылкаКонтрагент);
ТекстЗапроса = "ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.Владелец = &Контрагент";
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Ссылка);
КонецЦикла;
Перенести элемент в другую группу 1с 8.3:
КонтрагентОбъект = Справочники.Контрагенты.НайтиПоНаименованию("ООО Румпель").ПолучитьОбъект();
КонтрагентОбъект.Родитель = Справочники.Контрагенты.НайтиПоНаименованию("Покупатели");
КонтрагентОбъект.Записать();
Как получить и проверить пустую ссылку справочника 1с 8.3
ПустаяСсылка = Справочники.Контрагенты.ПустаяСсылка();
Если ПустаяСсылка.Пустая() Тогда
Сообщить("Это пустая ссылка!");
КонецЕсли;
Если Не ЗначениеЗаполнено(ПустаяСсылка) Тогда
Сообщить("Это пустая ссылка или неопределено!");
КонецЕсли;
Как узнать принадлежность элемента справочника группе 1с 8.3:
КонтрагентСсылка = Справочники.Контрагенты.НайтиПоНаименованию("ООО Румпель");
Если КонтрагентСсылка.Родитель = ГруппаКонтрагентов Тогда
Сообщить("Элемент находится в "+ГруппаКонтрагентов);
КонецЕсли;
//с учетом иерархии (вложенности)
Если КонтрагентСсылка.ПринадлежитЭлементу(ГруппаКонтрагентов) Тогда
Сообщить("Элемент находится в "+ГруппаКонтрагентов);
КонецЕсли;
Как скопировать существующий элемент справочника 1с 8.3
КонтрагентСсылка = Справочники.Контрагенты.НайтиПоНаименованию("ООО Румпель");
КонтрагентОбъектКопия = КонтрагентСсылка.Скопировать();
КонтрагентОбъектКопия.Наименование = КонтрагентОбъектКопия.Наименование + "##копия##";
КонтрагентОбъектКопия.Записать();
Как выяснить уровень вложенности элемента справочника 1с 8.3
КонтрагентСсылка = Справочники.Контрагенты.НайтиПоНаименованию("ООО Румпель");
Сообщить(КонтрагентСсылка.Уровень());
Как заблокировать элемент справочника перед изменениями 1с 8.3
КонтрагентОбъект = Справочники.Контрагенты.НайтиПоНаименованию("ООО Румпель").ПолучитьОбъект();
Если КонтрагентОбъект.Заблокирован() Тогда
Сообщить("Элемент кем то заблокирован!");
Иначе
КонтрагентОбъект.Заблокировать();
//изменяем реквизиты
//....
КонтрагентОбъект.Записать();
КонтрагентОбъект.Разблокировать();
КонецЕсли;
Как заполнить новый элемент справочника на основании 1с 8.3
СтруктураДанных = Новый Структура("Наименование,ИНН", "ООО Пороро", "100000001");
КонтрагентОбъект = Справочники.Контрагенты.СоздатьЭлемент();
КонтрагентОбъект.Заполнить(СтруктураДанных);
КонтрагентОбъект.Записать();
//в "модуле объекта" создаем процедуру "обработка заполнения"
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения,"Наименование,ИНН")
КонецЕсли;
КонецПроцедуры
Как открыть форму существующего элемента справочника, имея ссылку на него 1с 8.3
&НаКлиенте
Процедура ОткрытьФормуСуществующегоЭлементаСправочника()
КонтрагентСсылка = ПолучитьСсылкуНаКонтрагента("ООО Пороро");
//Вариант 1
ПараметрыФормы = Новый Структура("Ключ", КонтрагентСсылка);
ОткрытьФорму(
"Справочник.Контрагенты.ФормаОбъекта", // имя формы
ПараметрыФормы // параметры для формы
);
//Вариант 2 разрешены модальные окна
ОткрытьЗначение(КонтрагентСсылка);
//Вариант 3
ПоказатьЗначение(, КонтрагентСсылка);
КонецПроцедуры
Как открыть форму существующей группы справочника, имея ссылку на нее 1с 8.3
&НаКлиенте
Процедура ОткрытьФормуСуществующейГруппыСправочника()
КонтрагентСсылка = ПолучитьСсылкуНаКонтрагента("Поставщики");
ПараметрыФормы = Новый Структура("Ключ", КонтрагентСсылка);
ОткрытьФорму(
"Справочник.Контрагенты.ФормаГруппы", // имя формы
ПараметрыФормы // параметры для формы
);
КонецПроцедуры
Как открыть форму выбора элемента справочника и отследить её закрытие 1с 8.3
&НаКлиенте
Процедура ОткрытьФормуВыбораЭлементаСправочника(Команда)
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораЭлемента", ЭтотОбъект);
ОткрытьФорму("Справочник.Контрагенты.ФормаВыбора",,,,,,ОповещениеОЗакрытии);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораЭлемента(Результат, Параметры) Экспорт
Если Результат <> Неопределено Тогда
Сообщить("Был выбран элемент " + Результат);
КонецЕсли;
КонецПроцедуры
Как открыть форму списка справочника и установить отбор по реквизиту 1с 8.3
&НаКлиенте
Процедура ОткрытьФормуСпискаСправочникаСОтбором(Команда)
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ИНН", "100000001"));
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ОткрытьФорму(
"Справочник.Контрагенты.ФормаСписка",
ПараметрыФормы
);
КонецПроцедуры
Как открыть форму списка справочника с нужным отображением 1с 8.3
&НаКлиенте
Процедура ОткрытьФормуСпискаСправочникаСНужнымОтображением(Команда)
// откроем список контрагентов с отображением "Список"
ФормаСписка = ПолучитьФорму("Справочник.Контрагенты.ФормаСписка");
ФормаСписка.Открыть();
ФормаСписка.Элементы.Список.Отображение = ОтображениеТаблицы.Список;
КонецПроцедуры
Как открыть форму только что созданного, но ещё не записанного элемента справочника в 1с 8.3
&НаКлиенте
Процедура ОткрытьФормуНовогоНеЗаписанногоСправочника(Команда)
// получаем форму нового справочника
ФормаНовогоСправочника = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта",,, Истина);
// делаем копию её данных (так как напрямую их менять
// нельзя)
КопияДанныхФормы = ФормаНовогоСправочника.Объект;
// заполняем эти данные на сервере
ЗаполнитьДанныеФормыНаСервере(КопияДанныхФормы);
// копируем заполненные данные в исходную форму
КопироватьДанныеФормы(КопияДанныхФормы,
ФормаНовогоСправочника.Объект);
// показываем форму нового заполненного
// элемента справочника пользователю
ФормаНовогоСправочника.Открыть();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеФормыНаСервере(ДанныеФормы)
// преобразуем данные формы в объект
КонтрагентОбъект = ДанныеФормыВЗначение(ДанныеФормы, Тип("СправочникОбъект.Контрагенты"));
КонтрагентОбъект.Наименование = "ООО Виннипух";
КонтрагентОбъект.ИНН = "10000001";
// преобразуем объект обратно в данные формы
ЗначениеВДанныеФормы(КонтрагентОбъект, ДанныеФормы);
КонецПроцедуры
You have no rights to post comments
Как программно заполнить контактную информацию контрагента в типовых конфигурациях
Часто новички допускают ошибку при программном создании контрагентов и добавляют контактную информацию напрямую в табличную часть.
Ошибка заключается в том, что в поле «Значение» хранится не сама контактная информация (например, телефон «+3752912345678»), а её представление в виде XML.
Ниже приведен фрагмент программного кода правильной загрузки контактной информации в 1С:
——————————————————————————
//вид контактной информации (адрес партнера, адрес контрагента, телефон партнера и т.д.)
ВидКИ = Справочники.ВидыКонтактнойИнформации.АдресПартнера;
//тип контактной информации (Адрес, Телефон, ЭлектроннаяПочта)
ТипКИ = ВидКИ.Тип;
//получение объекта XDTO по представлению контактной информации
ОбъектXDTOКИ = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOПоПредставлению(«г. Минск, ул. Пинская, 28А», ТипКИ);
ЗначенияПолей =
//преобразование объекта XDTO в xml
УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(ОбъектXDTOКИ);
//запись контактной информации в табличную часть объекта
//ПартнерОбъект — тип СправочникОбъект.ИмяСправочника
УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ПартнерОбъект, ЗначенияПолей, ВидКИ, ТипКИ);
——————————————————————————
2020-02-21 15:54
Программирование