Получить реквизиты контрагента 1с программно

К примеру для формирования макета договра необходимы Юр. адреса и номера телефонов сторон:

// ...

ДанныеОрганизации = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеДоговора.Организация,  ТекущаяДата());
ДанныеКонтрагента = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеДоговора.Контрагент,  ТекущаяДата());

ОбластьРеквизиты = Макет.ПолучитьОбласть("Реквизиты");
// ...
ОбластьРеквизиты.Параметры.ЮридическийАдресОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеОрганизации, "ЮридическийАдрес");
ОбластьРеквизиты.Параметры.ТелефонОрганизации = ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеОрганизации, "Телефоны");
ОбластьРеквизиты.Параметры.ЮридическийАдресКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеКонтрагента, "ЮридическийАдрес");
ОбластьРеквизиты.Параметры.ТелефонКонтрагента = ФормированиеПечатныхФорм.ОписаниеОрганизации(ДанныеКонтрагента, "Телефоны");
// ...

Через метод ФормированиеПечатныхФорм.ОписаниеОрганизации можно получить: ПолноеНаименование, ИНН, КПП, ФактическийАдрес, Телефоны, НомерСчета, Банк, БИК, КоррСчет и т.д. Все данные контрагента или организации.

Заполнить данные организации по ИНН

В предыдущей записи, я показал как можно легко пользоваться сервисом 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}}]}

Далее в действиях кнопки уже работаю с этой строкой: Убираю лишние символы, вытаскиваю нужные значения. В этом плане помог пример с сайта 

Результат

В результате получаю рабочую кнопку при нажатии которой заполняются необходимые поля.

   ogion83

06.06.13 — 13:40

День добрый.

Подскажите, как получить реквизиты банка контрагента. Где они хранятся?

  

Партнерская программа EFSOL Oblako

   Ненавижу 1С

1 — 06.06.13 — 13:40

позвонит в банк

   ДенисЧ

2 — 06.06.13 — 13:41

В конфигурации 1с:ЗиКнет банковских счетов…

   kortun

3 — 06.06.13 — 13:42

какая конфигурация то хоть?

   ogion83

4 — 06.06.13 — 13:44

В форме справочника Контрагенты есть вкладка «Счета и договоры», реквизиты банков (р/с, БИК и т.д.) лежат там, но как их изъять (надо для печатной формы)

   ogion83

5 — 06.06.13 — 13:44

8.2

   ДенисЧ

6 — 06.06.13 — 13:45

ой-ёё…

Открой код и посмотри, откуда они берутся…

   Godofsin

7 — 06.06.13 — 13:45

(5) Зашибись!

   ogion83

8 — 06.06.13 — 13:49

Адрес приходится запросом получать. Тут может и сбанком так? ГДЕ ЛЕЖАТ ЭТИ ДАННЫЕ? В самом справочнике «Контрагенты» нет их. В другом справочнике? В регистре сведений?

   Godofsin

9 — 06.06.13 — 13:51

спр. банковские счета

   Grobik

10 — 06.06.13 — 13:54

(8) Ты это конфигурацию назвать можешь?

Справка >> О программе.

Типа такого «Управление производственным предприятием для Украины», редакция (1.3.21.2) или «Бухгалтерия для Украины», редакция  (1.2.13.4)

   ogion83

11 — 06.06.13 — 13:56

Как связаны спр Контрагенты и спр Банковские счета?

   Grobik

12 — 06.06.13 — 13:58

(11) Где?

   ogion83

13 — 06.06.13 — 13:59

1С:Предприятие 8.2 (8.2.16.363)

   Масянька

14 — 06.06.13 — 13:59

(11) Веревкой.

   artems

15 — 06.06.13 — 14:00

(13) ты реально тупой или тролишь?

   ogion83

16 — 06.06.13 — 14:02

(15) Завали…

   ogion83

17 — 06.06.13 — 14:02

Хрен с вами, сам найду…

   Серго62

18 — 06.06.13 — 14:04

(11) Скорей всего они по владельцу связаны. А владельцем в справочнике счетов является контрагент.

   Grobik

19 — 06.06.13 — 14:12

ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПоставщике, «ЮридическийАдрес,Телефоны,/,КодПоЕДРПОУ,КодПоДРФО,ИНН,НомерСвидетельства,/,ИнформацияОСтатусеПлательщикаНалогов,»,,КодЯзыкаПечать);

   ogion83

20 — 06.06.13 — 15:58

Всего то и требовалось:

Запрос.УстановитьПараметр(«Контрагент»,Контрагент);

  Запрос.Текст = «ВЫБРАТЬ

|    БанковскиеСчета.Банк,

|    БанковскиеСчета.БанкДляРасчетов,

|    БанковскиеСчета.Владелец.Ссылка

|ИЗ

|    Справочник.БанковскиеСчета КАК БанковскиеСчета

|ГДЕ

| БанковскиеСчета.Владелец.Ссылка = &Контрагент»;

   Grobik

21 — 06.06.13 — 16:40

Кому требовалось?

Из семи стоящих у меня конфигураций это может сработать только в «Бухгалтерия для Украины», редакция 1.1. и «Бухгалтерия для Украины», редакция 1.2.

Или тебе должны были предоставить ВСЕ возможные варианты?

   MM

22 — 06.06.13 — 16:40

(20) Зачем в запросе использована Ссылка? Лишних соединений при исполнении запроса в СУБД не хватает?

   Серго62

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, нужно получить адрес контрагента.
В книге написан код:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Функция ПолучитьАдресКонтрагента(Объект)
    ФункцияВернет ="";
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |КонтактнаяИнформация.Тип КАК Тип,
    |КонтактнаяИнформация.Вид КАК Вид,
    |КонтактнаяИнформация.Представление КАК Представление
    |ИЗ                                                 
    |РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |КонтактнаяИнформация.Объект = &Объект";
    
    Запрос.УстановитьПараметр("Объект", Объект);
    РезультатПоиска = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("000000002");
    Результат = Запрос.Выполнить().Выбрать();
...

Я так понял этот код написан для НЕУПРАВЛЯЕМОЙ формы, попробовал его переписать под УФ, получилось так:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Функция ПолучитьАдресКонтрагента(Объект)
    ФункцияВернет ="";
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |КонтактнаяИнформация.Тип КАК Тип,
    |КонтактнаяИнформация.Вид КАК Вид,
    |КонтактнаяИнформация.Представление КАК Представление
    |ИЗ                                                 
    |Справочник.Контрагенты.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |КонтактнаяИнформация.Объект = &Объект";
    
    Запрос.УстановитьПараметр("Объект", Объект);
    РезультатПоиска = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("000000002");
    Результат = Запрос.Выполнить().Выбрать();

При выборе Документа в 1с выдаётся ошибка:
{Документ.Развозка.Форма.ФормаДокумента.Форма(17)} : Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить().Выбрать();
по причине:
{(9, 22)}: Поле не найдено «КонтактнаяИнформация.Объект»
КонтактнаяИнформация.<<?>>Объект = &Объект.
Как правильно переписать код? И что такое КонтактнаяИнформация.Объект = &Объект», не могу разобраться. Помогите, пжл

З.Ы.: я так понимаю в Регистре Сведений Контактной информации нет. Не нашёл такой регистр



0



Эксперт 1С

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



Эксперт 1С

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 Конфигурация УТ (демо). Мной добавлялись только: справочник Автомобили, Журнал и Документ «Развозка»
Если у кого есть стоящая литера по 1С (именно чтоб разжёвывалось «что, откуда берётся и куда вставляется») присылайте названия, буду благодарен. В инете то книг много и на форуме много, только всё поверхностно описано. Так же как и в данном случае

1C
1
КонтактнаяИнформация.Объект = &Объект";

почему именно Объект и для чего его берут называется догадайся сам.



0



GreenkA

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

02.11.2018, 15:54

7

Лучший ответ Сообщение было отмечено vitek944 как решение

Решение

Цитата
Сообщение от vitek944
Посмотреть сообщение

почему именно Объект и для чего его берут называется догадайся сам.

это параметр. В УТ вам достаточно передать в этот параметр ссылку на нужного Контрагента:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Функция ПолучитьАдресКонтрагента(Объект)
    ФункцияВернет ="";
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |КонтактнаяИнформация.Тип КАК Тип,
    |КонтактнаяИнформация.Вид КАК Вид,
    |КонтактнаяИнформация.Представление КАК Представление
    |ИЗ                                                 
    |Справочник.Контрагенты.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |КонтактнаяИнформация.Ссылка= &Объект";
    
    Запрос.УстановитьПараметр("Объект", Объект);
    РезультатПоиска = Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("000000002");
    Результат = Запрос.Выполнить().Выбрать();



0



1 / 1 / 0

Регистрация: 02.11.2018

Сообщений: 17

02.11.2018, 15:58

8

Рядом нет компа, но “обьект” — это Измерение в РегистреСведений КонтактнаяИнформация, в котором содержится ссылка на Контрагента.
Тип и Представление — это тоже измерения того же регистра, например, «Тип» (Перечисления.ТипыКонтактнойИнформации.Телефон), «Вид» (ссылка на запись в справочнике «Справочники.ВидыКонтактнойИнформации» или Строка).

Т.е. выбираются записи из регистраСведений.КонтактнаяИнформация, где измерение Объект=Ссылке, которую вы передаете при выполнении функции — Функция ПолучитьАдресКонтрагента(Объект)

Вы же ищите по справочнику, в котором возможно нет поля Объект , есть реквизит “ссылка” на контрагента
Реквизиты Тип и Вид могут тоже отсутствовать



1



Эксперт 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 минут
Теперь следующую ошибку выдаёт: Переменная не определена (Документ)
Для Каждого ТекущаяСтрока Из <<?>>Документ.Товары Цикл
Цикл перебирает ТЧ Товары документа, выбранного в поле формы Документ.
Как правильно обратьтся к нему?

1C
1
2
3
4
5
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

Эксперт 1С

3051 / 1998 / 524

Регистрация: 25.06.2009

Сообщений: 6,964

06.11.2018, 14:17

14

Цитата
Сообщение от vitek944
Посмотреть сообщение

выбранного в поле формы Документ

т.е. есть форма, а на ней поле Документ, а у этого Документа — ТЧ Товары?

Тогда

1C
1
2
3
4
5
6
Для Каждого ТекущаяСтрока Из Объект.Документ.Товары Цикл
        НоваяСтрокаТТН = Объект.ТТН.Добавить();
        НоваяСтрокаТТН.Товар = ТекущаяСтрока.Номенклатура;
        НоваяСтрокаТТН.Количество = ТекущаяСтрока.Количество;
        НоваяСтрокаТТН.ЕдиницаИзмерения = ТекущаяСтрока.ЕдиницаИзмерения;
    КонецЦикла;

Но только на сервере



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

Как программно заполнить контактную информацию контрагента в типовых конфигурациях

На практике часто встречаются задачи, связанные с загрузкой контрагентов из внешнего файла (например, Excel) в 1С. В типовых конфигурациях на основе БСП (библиотека стандартных подсистем) контактная информация контрагентов хранится в табличной части справочника.

Часто новички допускают ошибку при программном создании контрагентов и добавляют контактную информацию напрямую в табличную часть.

Ошибка заключается в том, что в поле «Значение» хранится не сама контактная информация (например, телефон «+3752912345678»), а её представление в виде XML.

Ниже приведен фрагмент программного кода правильной загрузки контактной информации в 1С:
——————————————————————————
//вид контактной информации (адрес партнера, адрес контрагента, телефон партнера и т.д.)
ВидКИ = Справочники.ВидыКонтактнойИнформации.АдресПартнера;
//тип контактной информации (Адрес, Телефон, ЭлектроннаяПочта)
ТипКИ = ВидКИ.Тип;

//получение объекта XDTO по представлению контактной информации
ОбъектXDTOКИ = УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOПоПредставлению(«г. Минск, ул. Пинская, 28А», ТипКИ);
ЗначенияПолей =
//преобразование объекта XDTO в xml
УправлениеКонтактнойИнформациейСлужебный.КонтактнаяИнформацияXDTOВXML(ОбъектXDTOКИ);
//запись контактной информации в табличную часть объекта
//ПартнерОбъект — тип СправочникОбъект.ИмяСправочника
УправлениеКонтактнойИнформацией.ЗаписатьКонтактнуюИнформацию(ПартнерОбъект, ЗначенияПолей, ВидКИ, ТипКИ);
——————————————————————————


2020-02-21 15:54

Программирование

Понравилась статья? Поделить с друзьями:
  • Пользователю пэвм во время работы необходимо
  • Поля реквизитов платежного поручения образец
  • Полярная звезда транспортная компания отзывы
  • Помощь малому бизнесу в оренбургской области
  • Помощь малому бизнесу в ростове на дону 2022