Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 04:39
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Программное добавление элемента справочника  (Прочитано 1148 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Golickoff

  • ****
  • Сообщений: 359
  • РЕПУТАЦИЯ: 36
  • КПД: 10%
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
Всем привет.
Есть некий код внешней обработки:
Имущество = Справочники.Имущество.СоздатьЭлемент();
Для ТекущаяЯчейка=0 по МассивСтрок.Количество()-1 Цикл
ДлинаСтроки = СтрДлина(МассивСтрок[ТекущаяЯчейка]);
ТекущееИмущество = СтрЗаменить(Лев(МассивСтрок[ТекущаяЯчейка],ДлинаСтроки-6),Символы.НПП, " ");
Если Справочники.Имущество.НайтиПоНаименованию(ТекущееИмущество) = Справочники.Имущество.ПустаяСсылка() Тогда
Имущество.Наименование = ТекущееИмущество;
Имущество.Вес = Число(Прав(МассивСтрок[ТекущаяЯчейка],5));
Имущество.Записать();
КонецЕсли;
КонецЦикла;
Наверняка, вам покажется смешным то, какую нелепую ошибку я допустил, но я не вижу её в упор. Почему не создаются элементы справочника?
Наименование не ограничено по длине (=0), вес -- число (ЧЦ=10; ЧДЦ=3).
Если остановить цикл в любой момент времени, получаю что-то типа
ТекущееИмущество = Костюм летний полевой расцветки "Цифра", брюки; Текст.
Число(Прав(МассивСтрок[ТекущаяЯчейка],5)) = 0,630; Число.
То есть, типы соответствуют.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.


Оффлайн ferrari314

  • ***
  • Сообщений: 174
  • РЕПУТАЦИЯ: 6
  • КПД: 3%
  • Главное - не есть желтый снег.
  • Регистрация: 2015-02-09
  • Сайт: 
ИМХО Некорректный код.
Элемент создается один раз, Затем что-то происходит в цикле, при определенных условиях объект записывается.
Либо это продиктовано некими внешними условиями которые вы не описали, либо это говнокод.
Если вы редактируете элементы в теле цикла, то и создание должно быть в теле.
Если вы записываете объект только при определенных условиях, то и создание должно быть в них - иначе это бессмыслица.
Вот вы и получаете кашу вида:
Объект создается, но может не записаться. А может вообще должно было записаться несколько объектов? тогда создание должно быть в цикле.
Разбирайте логику.



Оффлайн Golickoff

  • ****
  • Сообщений: 359
  • РЕПУТАЦИЯ: 36
  • КПД: 10%
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
ИМХО Некорректный код.
Элемент создается один раз, Затем что-то происходит в цикле, при определенных условиях объект записывается.
Либо это продиктовано некими внешними условиями которые вы не описали, либо это говнокод.
Если вы редактируете элементы в теле цикла, то и создание должно быть в теле.
Если вы записываете объект только при определенных условиях, то и создание должно быть в них - иначе это бессмыслица.
Вот вы и получаете кашу вида:
Объект создается, но может не записаться. А может вообще должно было записаться несколько объектов? тогда создание должно быть в цикле.
Разбирайте логику.
Вот я индеец...
Переместил строку
Имущество = Справочники.Имущество.СоздатьЭлемент();
в тело цикла и всё заработало.
Для ТекущаяЯчейка=0 по МассивСтрок.Количество()-1 Цикл
Имущество = Справочники.Имущество.СоздатьЭлемент();
ДлинаСтроки = СтрДлина(МассивСтрок[ТекущаяЯчейка]);
ТекущееИмущество = СтрЗаменить(Лев(МассивСтрок[ТекущаяЯчейка],ДлинаСтроки-6),Символы.НПП, " ");
Если Справочники.Имущество.НайтиПоНаименованию(ТекущееИмущество) = Справочники.Имущество.ПустаяСсылка() Тогда
Имущество.Наименование = ТекущееИмущество;
Имущество.Вес = Число(Прав(МассивСтрок[ТекущаяЯчейка],5));
Имущество.Записать();
КонецЕсли;
КонецЦикла;
Спасибо!
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Оффлайн ferrari314

  • ***
  • Сообщений: 174
  • РЕПУТАЦИЯ: 6
  • КПД: 3%
  • Главное - не есть желтый снег.
  • Регистрация: 2015-02-09
  • Сайт: 
Потом вам потребуется доработать модуль, и у вас будет непонятный баг, когда элемент не записывается :) .
Запихайте вы уже его как надо:
Для ТекущаяЯчейка=0 по МассивСтрок.Количество()-1 Цикл
        ДлинаСтроки = СтрДлина(МассивСтрок[ТекущаяЯчейка]);
        ТекущееИмущество = СтрЗаменить(Лев(МассивСтрок[ТекущаяЯчейка],ДлинаСтроки-6),Символы.НПП, " ");
        Если Справочники.Имущество.НайтиПоНаименованию(ТекущееИмущество) = Справочники.Имущество.ПустаяСсылка() Тогда
            Имущество = Справочники.Имущество.СоздатьЭлемент();
            Имущество.Наименование = ТекущееИмущество;
            Имущество.Вес = Число(Прав(МассивСтрок[ТекущаяЯчейка],5));
            Имущество.Записать();
        КонецЕсли;
    КонецЦикла;
Возьмите за привычку писать все логично, ускоряет отладку вдвое, понимание - вдесятеро.


Теги: справочник 
 

Как вызвать "Анализ субконто" из справочника "Контрагенты"

Автор EnigManРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 6499
Последний ответ 06 Фев 2012, 10:46
от cska-fanat-kz
Заполнение поля табличной части документа из табличной части справочника.

Автор Kurt_WagnerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 4201
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

Автор kaf_infoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 632
Последний ответ 10 Май 2017, 20:44
от ilnur75
Как сделать, чтобы поле в документе имело тип "ссылка на поле справочника"?

Автор друганРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 2039
Последний ответ 05 Мар 2017, 14:36
от Igor100500
Изменение цвета при подборе сотрудника в форме списка справочника "Сотрудники организации" для документа "Зарплата к выплате организаций" ЗУП 2.5

Автор ksander-farsРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 270
Последний ответ 12 Окт 2017, 14:02
от wise

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
154 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
46 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 125
  • Точка Скрытых: 0
  • Точка Пользователей: 1
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal