• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Как выбрать контрагента.

  • Автор темы bremlin
  • Дата начала
B

bremlin

Доброго времени суток. Опишу ситуацию в целом.
1С 7.7 бухгалтерия. С дописанной конфигурацией под ЖКХ. В общем есть задача делать импорт данных об оплате за квартиру из файлика xls в бухгалтерскую справку, по 150-200 записей в день в одну справку.
Импорт делается по номеру лицевого счёта. Вроде
99007110253 Сумма
9900712021 Сумма

Где в общем 11 и 12 - номер дома в справочнике, ну а 253 и 21 - номера квартир.
Поиск нужной квартиры делаю через:
Код:
	СовсемПолныйКод = Число((Excel.Cells(ТекСтрока, 1).Value));
Если Лев(СокрЛП(СовсемПолныйКод), 5) = "99007" Тогда
ПолныйКод = "" + Число(Сред(СокрЛП(СовсемПолныйКод), 6, 2)) + "/" + Число(Сред(СокрЛП(СовсемПолныйКод), 8, 4));
Иначе
ПолныйКод = СокрЛП(СтрЗаменить(СовсемПолныйКод, "-", "/"));
КонецЕсли;
Код:
СпрЖКХ = СоздатьОбъект("Справочник.ЖКХ");
Если СпрЖКХ.Выбран() = 0 Тогда
Если СпрЖКХ.НайтиПоКоду(ПолныйКод, 2 - "поиск по полному коду через разделитель") = 1 Тогда
РПС_ЛицевойСчет1 = СпрЖКХ.ТекущийЭлемент().СубконтоЖКХ_1; 
РПС_ЛицевойСчет2 = СпрЖКХ.ТекущийЭлемент().СубконтоЖКХ_2;	
РПС_ЛицевойСчет3 = СпрЖКХ.ТекущийЭлемент().СубконтоЖКХ_3; 
РПС_ЛицевойСчет = СпрЖКХ.ТекущийЭлемент().КоррСчетЖКХ;
И все хорошо и здорово. Но проблема появилась в том, что раньше некоторые квартиры были на счёте 76.5, потом их перевели на 76.РК, но переводили не в справочнике, а просто при создании квитанции на оплату, идёт проверку, если квартира старая, то счёт выставляется на счёт 76.РК, если позже указанный даты, то уже смотрится значение из справочника.
И сейчас, когда идёт импорт и вытаскиваются данные из справочника, то он берёт данные по тому счёту которые там, т.е. 76.5, а надо 76.РК.
При замене:
Код:
				Если СчетПоКоду(РПС_ЛицевойСчет) = "76.5" Тогда
СпрЖКХ.ТекущийЭлемент().КоррСчетЖКХ; = "76.РК";
Данные по СубконтаЖКХ_1 сбрасываются, а там собственно сам котрагент.
И вот если КоррСчетЖКХ я могу установить просто = "76.РК", то я что-то не понимаю пока как можно присвоить СпрЖКХ.ТекущийЭлемент().СубконтоЖКХ_1 новое значение выбранное из справочника ЖКХ(там нужно зайти в нужный дом и выбрать нужную квартиру).
Подскажите пожалуйста, как можно заменить этот атрибут у элемента в справочнике на нужный мне?
 
V

vbs

Не слишком внятно сформулировано, но некоторые моменты уже вызывают сомнение
СпрЖКХ.ТекущийЭлемент().СубконтоЖКХ_1
я бы заменил на СпрЖКХ.СубконтоЖКХ_1
СчетПоКоду(РПС_ЛицевойСчет) = "76.5"
на РПС_ЛицевойСчет = СчетПоКоду("76.5")

вообще, зачем использовать ТекущийЭлемент() ?
Просто
СпрЖКХ.КоррСчетЖКХ; = СчетПоКоду("76.РК");
СпрЖКХ.Записать();

должно сработать

PS. Если я правильно уловил проблему
 
B

bremlin

Согласен, что можно и без ТекущийЭлемент().
Проблема в том, что я меняю СчетПоКоду("76.РК") и сбрасываются данные по контрагенту.
И чтобы заного поставить его, нужно как-то выбрать его из справочника.
Для этого есть код группы(дом) и номер контрагента(квартира).
Но я не знаю как установить контрагент:)
 
P

puh14

А тип значения у реквизита субконто в документе неопределенный.. Значит надо до смены счета вывести в отдельную переменную значение контрагента, далее после смены счета через НазначитьТип() установить тип субконто (для субконто1 например) и присвоить этому реквизиту значение из той самой отдельной переменной.

кстати - может там тип субконто на 76.РК вообще не конрагент?
 
V

vbs

СпрЖКХ.ТекущийЭлемент().КоррСчетЖКХ = "76.РК";
При таком присвоении
СпрЖКХ.КоррСчетЖКХ получает значение типа "Строка", а значит просто пусто, если КоррСчетЖКХ описан, как "Счет"
надо
СпрЖКХ.КоррСчетЖКХ = СчетПоКоду("76.РК");
Тогда у этого реквизита будет тип "Счет"
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!