Ошибка поле владелец не заполнено 1с

  1. Здравствуйте! Ошибка возникает при записи группы в справочнике номенклатура.Справочник иерархический.Значение поле Владелец не заполнено.для группы не нужно указывать владельца.Отключил проверки,пытался программно присвоить пустую ссылку не получается. В обработке заполнения отсутствует реквизит Владелец в проверяемых реквизитах. В чем дело тут?

    Вложения:

    • 1c.JPG
      1c.JPG
      Размер файла:
      169,7 КБ
      Просмотров:
      9

  2. nbIpKuH_BaH9I

    Offline

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.170
    Симпатии:
    554
    Баллы:
    204

    Ну так Вы в коде смотрите. Что там?

  3. В том то и дело интересно самому)Чистая база, ни в модуле объекта ни в модуле формы кода нет)Из стандартных реквизитов проверку удалил так же ошибку пишет…


  4. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    у иерархического спраовника поле не Владелец а Родитель должно быть заполнено у элементов группы


  5. nbIpKuH_BaH9I

    Offline

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.170
    Симпатии:
    554
    Баллы:
    204

    Ну значит, что то есть. Киньте конфу сюда.


  6. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    значит этот справочник у вас еще и подчиненный

  7. ну да, владельцем является другой справочник

    — Объединение сообщений, 1 сен 2014

    вот база

    Вложения:

    • 1Cv8.dt
      Размер файла:
      25,4 КБ
      Просмотров:
      2

  8. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    ну так и смотрите настройки подчинения

    — Объединение сообщений, 1 сен 2014

    можно же выбрать использование подчинения элементам, группам, ггруппам и элементам. Может тут неправильно выставили?

  9. нет пробовал не помогает

    — Объединение сообщений, 1 сен 2014

    посмотрите пожалуйста базу я скинул,буду благодарен.Интересно самому в чем дело)


  10. nbIpKuH_BaH9I

    Offline

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.170
    Симпатии:
    554
    Баллы:
    204

    Это что?
    upload_2014-9-1_14-20-46.png


  11. 1cUserAndrew

    Online

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.155
    Симпатии:
    217
    Баллы:
    104

    Вы уверены? )
    Откройте стандартные реквизиты, для реквизита «Владелец» укажите использование «Для элемента».

    — Объединение сообщений, 1 сен 2014

    Ой, блин, сорри, … предыдущее сообщение (скрин) не внимательно посмотрел. ))
    Видите, там подчинение «Группам и элементам».

  12. ну вы попробуйте сохраниться подчинение «Группам и элементам», и если реквизит владелец не заполнить, то всё равно ошибка выскачит


  13. nbIpKuH_BaH9I

    Offline

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.170
    Симпатии:
    554
    Баллы:
    204

    Блин. НУ это логично. Вы подчинили справочник Номенклатура зачем то единицам измерения. И одновременно сделали его иерархическим. Так и будьте любезны владельца поставить.

    — Объединение сообщений, 1 сен 2014

    Все программа правильно делает.

    — Объединение сообщений, 1 сен 2014

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

  14. действительно меня попросили найти, на самом деле все верно разобрались(на что я не обратил внимание) неправильное подчинение было. Спасибо Вам за помощь)


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

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

Вот само ТЗ:
3.2 Если значение в файле в колонке «J»(БИК) заполнено, поиск по коду в справочнике Банки. Т.е. код справочника = БИК из файла.
3.2.1 Если Банк не найден, создать элемент справочника «Банки», код = «БИК» (колонка J), наименование = «БАНК ПОЛУЧАТЕЛЬ…» (колонка F), ГОРОД = «ГОРОД…» (колонка G), КоррСчет = «КОР. СЧЕТ» (колонка K). Записать новый элемент справочника «Банки».
3.2.2 Следом, создать элемент справочника «БанковскиеСчета», реквизит «Банк» заполнить элементом справочника из п. 3.2.1, записать созданный элемент справочника «»БанковскиеСчета»
3.2.3
проверить запросом»
ВЫБРАТЬ
Контрагенты.Ссылка
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.ОсновнойБанковскийСчет.Банк.Код = &Код»
есть ли в системе контрагент, у которого основной банковский счет принадлежит банку с кодом (БИК-ом) банка из п.3.2
Если контрагент не найден, создать новый элемент справочника «Контрагенты», наименование = наименование элемента справочника Банки из п.3.2,
Основной банковский счет = БанковскийСчет из п.3.2.2.
ИНН заполнить как ИНН из файла (колонка H)
КПП заполнить как КПП из файла (колонка I)
Записть элемент справочника «Контрагенты».
3.2.4 — Если значение в файле в колонке «J»(БИК) НЕ заполнено, предполагается что банка нет.
Ищем контрагнета в справочнике «Контрагенты» по наименвоанию, колонка «F»
Если контрагент не найден, создаем контрагента аналогично п.3.2.3, Но реквизит «Основной банковский счет» не заполняется, никаких запросов проверки тоже нет, только алгоритм создания. Наименование = значение колонки «F»

Вот код, который я прописываю (не судите строго, всего неделю как изучаю программирование 1с)————————————————————————————

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Если ЗначениеЗаполнено(БИК) Тогда
Банк = Справочники.Банки.НайтиПоКоду(БИК);
 
Если НЕ ЗначениеЗаполнено(Банк.Код) Тогда
НовыйЭлемент = Справочники.Банки.СоздатьЭлемент();
НовыйЭлемент.Код = БИК;
НовыйЭлемент.Наименование = БанкЭК;
НовыйЭлемент.Город = ГородЭК;
НовыйЭлемент.КоррСчет = КоррСчетЭК;
НовыйЭлемент.Записать();
 
НовыйЭЛ = Справочники.БанковскиеСчета.СоздатьЭлемент();
НовыйЭЛ.Владелец = ;
НовыйЭЛ.Банк = БанкЭК;
НовыйЭЛ.Записать();
 
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
| Контрагенты.Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ОсновнойБанковскийСчет.Банк.Код = &Код";
 
Запрос.УстановитьПараметр("Код", БИК);
 
РезультатЗапроса = Запрос.Выполнить();
 
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
КонецЦикла; 
 
ИначеЕсли РезультатЗапроса = 0 Тогда
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.Наименование = БанкЭК;
НовыйКонтрагент.ОсновнойБанковскийСчет = НовыйЭЛ.НомерСчета;
НовыйКонтрагент.ИНН = ИНН;
НовыйКонтрагент.КПП = КПП;
НовыйКонтрагент.Записать();
КонецЕсли;
 
ИначеЕсли НЕ ЗначениеЗаполнено(БИК) Тогда
Сообщить("Банка нет");
 
Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(БанкЭК);
Если НЕ ЗначениеЗаполнено(Контрагент.Наименование) Тогда
НовыйКонтрагент1 = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент1.Наименование = БанкЭК;
НовыйКонтрагент1.ИНН = ИНН;
НовыйКонтрагент1.КПП = КПП;
НовыйКонтрагент1.Записать();
КонецЕсли;
КонецЕсли;

Подскажите, где я ошибаюсь в написании кода

Ошибка «Значение поля «Владелец»…»

19 мая 2016 16:24 #1

#1
от Владимир

Здравствуйте. В контрагентах банк добавлен. В справочнике «Банки организации» не получается добавить банк, что бы сделать выгрузку файла в банк. Все реквизиты заполнены. Ошибка — Значение поля «Владелец» не заполнено или заполнено неверно. Скрин приложен. Версия конфигурации последняя на этот момент времени.

Тема закрыта.

19 мая 2016 16:30 #2

#2
от Ольга Николаевна

Сведения о Банке необходимо добавлять в справочнике «фирмы» — на закладке «прочее» — для конкретной организации.
А Вы пытаетесь ввести Банк в справочнике «банки организаций».


Акулиничева Ольга Николаевна
Группа компаний «Камин»

Тема закрыта.


Спасибо сказали: Андрей Ланьшин

  1. 04.11.2011, 22:50


    #1

    Sineglazka вне форума


    Пришел за помощью


    По умолчанию Значение поля «Владелец» не заполнено (Обмен между 1С предприятие и 1С ЗУП )

    Здравствуйте. Подскажите, пожалуйста. Создала чистую конфигурацию 1С «Зарплата и управление персоналом». Из 1С выгрузила первоначальные данные в эту конфигурацию — все загрузилось без ошибок. Начала заполнять данные в ЗУП. Однако при создании подразделения организации выскакивает вот такая ошибка «Значение поля «Владелец» не заполнено или заполнено неверно»
    и вообще в этой ЗУП не отражается в документах организация и выбрать ее нельзя, хотя она в справочнике «Организации» есть. Подскажите, может кто сталкивался с такой проблемой :confused:


  2. 06.11.2011, 18:50


    #2

    PASAHAKA вне форума


    Просто юзер


    По умолчанию

    Честно не знаю, я бы посоветовал сделать чистую ЗП затем в ней уже создать элемент справочника организация . это нужно для того что бы БП и ЗП синхрогнизировалось по акому либо принипу в данному случае по организации***


  3. Пользователь сказал cпасибо:


Значение поля «Владелец» не заполнено или заполнено неверно ☑ 0

Reclaim

16.11.15

08:10

Здравствуйте! Работаю в конфигурации ЗУП 2.5, создаю внешнюю обработку для загрузки данных. Вот часть кода, в которой выдается ошибка.

———————————————————————————————————-

Если ЗначениеЗаполнено(БИК) Тогда

    Банк = Справочники.Банки.НайтиПоКоду(БИК);

                        
    Если НЕ ЗначениеЗаполнено(Банк.Код) Тогда

    НовыйЭлемент = Справочники.Банки.СоздатьЭлемент();

    НовыйЭлемент.Код = БИК;

    НовыйЭлемент.Наименование = БанкЭК;

    НовыйЭлемент.Город = ГородЭК;

        НовыйЭлемент.КоррСчет = КоррСчетЭК;

    НовыйЭлемент.Записать();

                            
    НовыйЭЛ = Справочники.БанковскиеСчета.СоздатьЭлемент();

        НовыйЭЛ.Банк = БанкЭК;

    НовыйЭЛ.Записать();

———————————————————————————————————-

Программа ругается и выдает такую ошибку: {Форма.Форма.Форма(115)}: Ошибка при вызове метода контекста (Записать) НовыйЭЛ.Записать();

по причине: Значение поля «Владелец» не заполнено или заполнено неверно.

Подскажите как избавиться от этой ошибки.

1

Горогуля

16.11.15

08:11

заполнить поле? нет, не то

2

tixis

16.11.15

08:11

Заполнить владельца наверное

3

Горогуля

16.11.15

08:12

(2) это слишком просто, автор явно уже подумал об этом

4

Reclaim

16.11.15

08:16

Непонятки еще заключаются в том, что при запуске обработки, эта ошибка вылезает каждый раз по разному. Т.е. в первом запуске ошибка вылезает после обработки 5 строк, при втором запуске после 11 строк, при третьем после 30 строк…

5

cw014

16.11.15

08:18

(4) Наверное потому, что где то как то у тебя все таки владелец заполняется

6

Горогуля

16.11.15

08:19

(4) вот так выглядит работа условного перехода

7

Мимохожий Однако

16.11.15

08:19

НовыйЭлемент.Записать();                      

НовыйЭЛ = Справочники.БанковскиеСчета.СоздатьЭлемент();

НовыйЭЛ.Владелец = НовыйЭлемент.Ссылка;

НовыйЭЛ.Банк = БанкЭК;

НовыйЭЛ.Записать();

8

Горогуля

16.11.15

08:20

а вообще, нехорошо банки создавать. для этого целый классификатор естт

9

Reclaim

16.11.15

08:30

В принципе в какой стороне искать решение понял, пошел разбираться. Всем спасибо!

10

Reclaim

16.11.15

08:42

Все равно застопорился…

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

Вот само ТЗ:

3.2 Если значение в файле в колонке «J»(БИК) заполнено, поиск по коду в справочнике Банки. Т.е. код справочника = БИК из файла.

3.2.1 Если Банк не найден, создать элемент справочника «Банки», код = «БИК» (колонка J), наименование = «БАНК ПОЛУЧАТЕЛЬ…» (колонка F), ГОРОД = «ГОРОД…» (колонка G), КоррСчет = «КОР. СЧЕТ» (колонка K). Записать новый элемент справочника «Банки».

3.2.2 Следом, создать элемент справочника «БанковскиеСчета», реквизит «Банк» заполнить элементом справочника из п. 3.2.1, записать созданный элемент справочника «»БанковскиеСчета»

3.2.3

проверить запросом»

ВЫБРАТЬ

Контрагенты.Ссылка

ИЗ

Справочник.Контрагенты КАК Контрагенты

ГДЕ

Контрагенты.ОсновнойБанковскийСчет.Банк.Код = &Код»

есть ли в системе контрагент, у которого основной банковский счет принадлежит банку с кодом (БИК-ом) банка из п.3.2

Если контрагент не найден, создать новый элемент справочника «Контрагенты», наименование = наименование элемента справочника Банки из п.3.2,

Основной банковский счет = БанковскийСчет из п.3.2.2.

ИНН заполнить как ИНН из файла (колонка H)

КПП заполнить как КПП из файла (колонка I)

Записть элемент справочника «Контрагенты».

3.2.4 — Если значение в файле в колонке «J»(БИК) НЕ заполнено, предполагается что банка нет.

Ищем контрагнета в справочнике «Контрагенты» по наименвоанию, колонка «F»

Если контрагент не найден, создаем контрагента аналогично п.3.2.3, Но реквизит «Основной банковский счет» не заполняется, никаких запросов проверки тоже нет, только алгоритм создания. Наименование = значение колонки «F»

Вот код, который я прописываю (не судите строго, всего неделю как изучаю программирование 1с)————————————————————————————

Если ЗначениеЗаполнено(БИК) Тогда

Банк = Справочники.Банки.НайтиПоКоду(БИК);

Если НЕ ЗначениеЗаполнено(Банк.Код) Тогда

НовыйЭлемент = Справочники.Банки.СоздатьЭлемент();

НовыйЭлемент.Код = БИК;

НовыйЭлемент.Наименование = БанкЭК;

НовыйЭлемент.Город = ГородЭК;

НовыйЭлемент.КоррСчет = КоррСчетЭК;

НовыйЭлемент.Записать();

НовыйЭЛ = Справочники.БанковскиеСчета.СоздатьЭлемент();

НовыйЭЛ.Владелец = ;

НовыйЭЛ.Банк = БанкЭК;

НовыйЭЛ.Записать();

Запрос = Новый Запрос;

Запрос.Текст =

«ВЫБРАТЬ

| Контрагенты.Ссылка

|ИЗ

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

|ГДЕ

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

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

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

// Вставить обработку выборки ВыборкаДетальныеЗаписи

КонецЦикла;

ИначеЕсли РезультатЗапроса = 0 Тогда

НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();

НовыйКонтрагент.Наименование = БанкЭК;

НовыйКонтрагент.ОсновнойБанковскийСчет = НовыйЭЛ.НомерСчета;

НовыйКонтрагент.ИНН = ИНН;

НовыйКонтрагент.КПП = КПП;

НовыйКонтрагент.Записать();

КонецЕсли;

ИначеЕсли НЕ ЗначениеЗаполнено(БИК) Тогда

Сообщить(«Банка нет»);

Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(БанкЭК);

Если НЕ ЗначениеЗаполнено(Контрагент.Наименование) Тогда

НовыйКонтрагент1 = Справочники.Контрагенты.СоздатьЭлемент();

НовыйКонтрагент1.Наименование = БанкЭК;

НовыйКонтрагент1.ИНН = ИНН;

НовыйКонтрагент1.КПП = КПП;

НовыйКонтрагент1.Записать();

КонецЕсли;

КонецЕсли;

Подскажите, где я ошибаюсь в написании кода

11

Горогуля

16.11.15

08:43

а можно я не буду читать гору букв, а спрошу: что не так?

12

Reclaim

16.11.15

09:01

Т.е. при выборе владельца, для элемента справочника «БанковскиеСчета» я не могу выбрать нужного контрагента, т.к. у меня нет нужных контрагентов в справочнике, а создаю я их только после того, как записываю элемент справочника «БанковскиеСчета»

13

Горогуля

16.11.15

09:02

это очень хорошо

14

Reclaim

16.11.15

09:03

Проблема в том, либо это ТЗ неправильно составлена, либо я что-то не понимаю (а учитывая уровень моих знаний в 1с, то я больше склонен к этой версии)

15

redding

16.11.15

09:03

(12) А в чем проблема делать наоборот?)

16

Мимохожий Однако

16.11.15

09:06

(12)Для еще не сохраненного объекта можно получить ссылку нового, а потом использовать для других объектов.

17

aleks_default

16.11.15

09:11

(16) не учите его плохому, пусть ТЗ правильно составляют

18

Reclaim

16.11.15

09:12

Сейчас пытаюсь такое провернуть, но есть пунк, который я прописал маленько «нашару», т.к. не знаю как это сделать правильно.

проверить запросом

ВЫБРАТЬ

Контрагенты.Ссылка

ИЗ

Справочник.Контрагенты КАК Контрагенты

ГДЕ

Контрагенты.ОсновнойБанковскийСчет.Банк.Код = &Код»

есть ли в системе контрагент, у которого основной банковский счет принадлежит банку с кодом (БИК-ом) банка из п.3.2

Если контрагент не найден, создать новый элемент справочника «Контрагенты», наименование = наименование элемента справочника Банки из п.3.2,

Основной банковский счет = БанковскийСчет из п.3.2.2.

ИНН заполнить как ИНН из файла (колонка H)

КПП заполнить как КПП из файла (колонка I)

Записть элемент справочника «Контрагенты».

Я это прописываю так, но пятой точкой чувствую что делаю это неправильно ———————————

Запрос = Новый Запрос;

                            Запрос.Текст =

                            «ВЫБРАТЬ

                            |    Контрагенты.Ссылка

                            |ИЗ

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

                            |ГДЕ

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

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

                            
                            РезультатЗапроса = Запрос.Выполнить();

                            
                            ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

                            
                            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

                                // Вставить обработку выборки ВыборкаДетальныеЗаписи

                            КонецЦикла;                    

                            
                        ИначеЕсли РезультатЗапроса = 0 Тогда

                            НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();

                            НовыйКонтрагент.Наименование = БанкЭК;

                            //НовыйКонтрагент.ОсновнойБанковскийСчет = НовыйЭЛ.НомерСчета;

                            НовыйКонтрагент.ИНН = ИНН;

                            НовыйКонтрагент.КПП = КПП;

                            НовыйКонтрагент.Записать();

                        КонецЕсли;

19

Мимохожий Однако

16.11.15

09:12

(17)Что же плохого? (если это всерьёз)

20

Мимохожий Однако

16.11.15

09:14

Включи отладчик и пошагово посмотри в своём коде. Тогда твои ощущения перейдут в практическое исправление ошибок.

21

Reclaim

16.11.15

09:22

Дело в том, что отладчик просто перескакивает весь запрос (что по идее ненормально). Поэтому и возникает такое ощущение, что код у меня неправильный.

P.S. Я настолько начинающий, что данные отладчика мне мало что говорят.

22

Горогуля

16.11.15

09:23

пошаговая отладка запроса в принципе невозможна

23

aleks_default

16.11.15

09:25

А то что он сейчас будет заморачиваться с ПолучитьСсылкуНового и в итоге может получить «Объект не найден»(если будет делать не в транзакции) и дальнейшие проблемы, вместо того чтобы правильно составить ТЗ и создавать сначала владельца, а потом банковский счет.

24

Мимохожий Однако

16.11.15

09:25

(21)Для отладки текста запроса есть Консоль запросов.

Если остановиться на результате запроса, то его можно выгрузить в ТЗ и посмотреть. Например, Результат.Выгрузить()

25

Мимохожий Однако

16.11.15

09:26

(23)Думаешь, ему будут повторно ТЗ составлять?

26

aleks_default

16.11.15

09:28

(25) сам не дурак должен быть

27

hhhh

16.11.15

09:38

(21) вот тут бредишь

                       ИначеЕсли РезультатЗапроса = 0 Тогда

результат запроса не может быть 0.

28

Мимохожий Однако

16.11.15

09:41

ОФФ:(26)Строг ты, батенька. Мы также начинали.

29

cw014

16.11.15

09:42

ТЗ составлен максимально корректно. Это ТС читать не умеет.

Читаем:

проверить запросом

ВЫБРАТЬ

Контрагенты.Ссылка

ИЗ

Справочник.Контрагенты КАК Контрагенты

ГДЕ

Контрагенты.ОсновнойБанковскийСчет.Банк.Код = &Код»

есть ли в системе контрагент, у которого основной банковский счет принадлежит банку с кодом (БИК-ом) банка из п.3.2

пока все понятно, проверили, НИЧЕГО НЕ СОЗДАЕМ ПОКА ЕЩЕ (поскольку нет такого в ТЗ). Далее:

есть ли в системе контрагент, у которого основной банковский счет принадлежит банку с кодом (БИК-ом) банка из п.3.2

!!!Если контрагент не найден, создать новый элемент справочника «Контрагенты»,!!! наименование = наименование элемента справочника Банки из п.3.2,

Если контрагент не найден, создать контрагента (Контрагента, Карл!!!) А потом уже банковский счет

30

Reclaim

16.11.15

09:56

Проблема в том, либо это ТЗ неправильно составлена, либо я что-то не понимаю (а учитывая уровень моих знаний в 1с, то я больше склонен к этой версии)

Писал такое некоторое количество сообщений назад, так что замечание правильное

31

cw014

16.11.15

10:07

(30) Ну вот теперь голову в руки, руки с одного места на правильное пересади и делай в соответствии с ТЗ

32

Reclaim

16.11.15

10:18

Руки в правильном месте. Знаний в голове пока нету. От этого и куча вопросом и непоняток

33

aleks_default

16.11.15

10:21

(29)Собеседование через мисту? Круто, че.

ТС спалился походу, теперь не возьмут…

34

hhhh

16.11.15

10:22

кто вообще составлял это тз? как может название контрагента совпасть с названием банка?

35

ДенисЧ

16.11.15

10:22

(34) А кто сказал, что не может?

36

Reclaim

16.11.15

10:37

Нет, не собеседование. Уже рабочее задание. На несложных заказах учусь программировать. Стараюсь сам разбираться, но далеко не всегда получается.

P.S. Работать взяли абсолютно без знания 1с, так что сейчас все это наверстываю

37

aleks_default

16.11.15

10:40

(36)Начинай с вдумчивого чтения ТЗ. Лучше несколько раз.

38

Reclaim

16.11.15

10:44

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

Код 1C v 8.х

 Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
// Отключение стандартной обработки
СтандартнаяОбработка = Ложь;

// Выбор файла Microsoft Excel
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.Фильтр = "Документ Excel (*.xls)|*.xls";
ВыборФайла.ПроверятьСуществованиеФайла = Истина;
ВыборФайла.ПолноеИмяФайла = ИмяФайла;
Выбор = ВыборФайла.Выбрать();
Если НЕ Выбор Тогда

Возврат;

КонецЕсли;

ИмяФайла = ВыборФайла.ВыбранныеФайлы[0];

КонецПроцедуры

Процедура ЧтениеXLSФайла(Элемент)

Если ПустаяСтрока(ИмяФайла) Тогда
Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
Возврат;
КонецЕсли;

Попытка
// Загрузка Microsoft Excel
Состояние("Загрузка Microsoft Excel...");
ExcelПриложение = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки;

Попытка
// Открытие файла Microsoft Excel
Состояние("Открытие файла Microsoft Excel...");
ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
Исключение
Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
КонецПопытки;

Попытка
// Обработка файла Microsoft Excel
Состояние("Обработка файла Microsoft Excel...");
// Читаем данные первого листа книги
ExcelЛист = ExcelФайл.Sheets(1);

// Определить количество строк и колонок выбранного листа книги Excel
xlCellTypeLastCell = 11;
ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
Исключение
Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
// Закрыть COM соединение для экономии памяти
ExcelПриложение.Quit();
КонецПопытки;

// Создание описателя типов для таблицы значений
КЧ = Новый КвалификаторыЧисла(15,2);
КС = Новый КвалификаторыСтроки(50);
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
Массив.Очистить();
Массив.Добавить(Тип("Число"));
ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);

// Очистить предыдущие значения
ТаблицаДокумента.Очистить();
ТаблицаДокумента.Колонки.Очистить();

// Создать колонки табличного документа
ТаблицаДокумента.Колонки.Добавить(ExcelЛист.Cells(1, 1).Value,ОписаниеТиповС,ExcelЛист.Cells(1, 1).Value,50);
ТаблицаДокумента.Колонки.Добавить(ExcelЛист.Cells(1, 2).Value,ОписаниеТиповС,ExcelЛист.Cells(1, 2).Value,50);
ТаблицаДокумента.Колонки.Добавить(ExcelЛист.Cells(1, 3).Value,ОписаниеТиповС,ExcelЛист.Cells(1, 3).Value,50);
ТаблицаДокумента.Колонки.Добавить(ExcelЛист.Cells(1, 4).Value,ОписаниеТиповЧ,ExcelЛист.Cells(1, 4).Value,50);

// Последовательное чтение строк с выбранного листа
Для Строка = 2 По ExcelПоследняяСтрока Цикл

// Обработка нажатия Ctrl + Break
ОбработкаПрерыванияПользователя();

// Добавить данные в табличную часть экранной формы
Стр=ТаблицаДокумента.Добавить();
Попытка
Стр[0] = ExcelЛист.Cells(Строка, 1).Value;
Стр[1] = ExcelЛист.Cells(Строка, 2).Value;
Стр[2] = ExcelЛист.Cells(Строка, 3).Value;
Стр[3] = ExcelЛист.Cells(Строка, 4).Value;
Исключение
// Не редко происходит ошибка конвертации отдельной ячейки документа
Сообщить("Ошибка чтения строки файла Microsoft Excel." + Строка + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
КонецПопытки;
// Отобразить информацию о ходе выполнения обработки
Состояние("Обработка файла Microsoft Excel : "
+ "строка " + Строка + " из " + ExcelПоследняяСтрока);

КонецЦикла;

// Закрыть COM соединение для экономии памяти
ExcelПриложение.Quit();

// Отобразить результаты загрузки в форме элемента
ЭлементыФормы.ТаблицаДокумента.Значение = ТаблицаДокумента;
ЭлементыФормы.ТаблицаДокумента.СоздатьКолонки();

КонецПроцедуры // ЧтениеXLSФайла(Элемент)

Процедура ОсновныеДействияФормыСоздать(Кнопка)
//ExcelЛист = ExcelФайл.Sheets(1);
//ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
// Наименование = ExcelЛист.Cells(Строка, "Стр[1]").Value;
// Элем = Справочники.МестаХранения.НайтиПоНаименованию("Стр[1]");
// НовЭл.Владелец = ?(Элем = Неопределено, Справочники.МестаХранения.ПустаяСсылка(), Элем);

Для Каждого Стр Из ТаблицаДокумента Цикл
НовЭл = Справочники.МестаХранения.СоздатьЭлемент();
НовЭл.Наименование = Стр[2];
НовЭл.Код = Стр[0];
НовЭл.Владелец = Стр[0];//Справочники.Склады.НайтиПоКоду("СОС-01000");
НовЭл.Записать();
КонецЦикла;

КонецПроцедуры

Здравствуйте.

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

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

Решение данной задачи будем осуществлять на конфигурации «1С: Управление торговлей 11.2», но все действия можно применять и к другим конфигурациям, содержащим БСП (ЗУП 3, БУ 3, ERP 2 и т.д.).

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

Снять с поддержки конфигурацию

Редактирование с сохранением поддержки

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

Новый документ

3. Добавим копированием новый справочник «БСП_НовыйДокументПрисоединенныеФайлы» и в реквизите «ВладелецФайла» изменим тип на «ДокументСсылка.БСП_НовыйДокумент». Для копирования был выбран справочник «ЗаказКлиентаПрисоединенныеФайлы».

Новый справочник присоединенных файлов

Также не забываем изменить описание и представление объекта.

4. Добавляем в определяемые типы «ВладелецПрисоединенныхФайлов», «ПрисоединенныйФайл», «ПрисоединенныйФайлОбъект» новые объекты.

ПрисоединенныйФайлОбъект

ПрисоединенныйФайлОбъект НовыйТип

ПрисоединенныйФайл

ПрисоединенныйФайл НовыйТип

ВладелецПрисоединенныхФайлов

ВладелецПрисоединенныхФайлов НовыйТип

5. Если необходимо добавить возможность копирования присоединенных файлов при копировании документа, то необходимо в параметры формы документа добавить параметр «ЗначениеКопирования» и сделать его ключевым.

Копирование присоединенных файлов

В модуль формы добавить процедуру «ПриЗаписиНаСервере».

 
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	ПрисоединенныеФайлы.ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, Параметры);
КонецПроцедуры

6. Для отображения в форме списка наличия прикрепленных файлов необходимо доработать форму списка.

Изменим текст запроса списка

 
ВЫБРАТЬ
	ДокументБСП_НовыйДокумент.Ссылка,
	ДокументБСП_НовыйДокумент.ПометкаУдаления,
	ДокументБСП_НовыйДокумент.Номер,
	ДокументБСП_НовыйДокумент.Дата,
	ДокументБСП_НовыйДокумент.Проведен,
	ДокументБСП_НовыйДокумент.Реквизит1,
	ДокументБСП_НовыйДокумент.Реквизит2,
	ДокументБСП_НовыйДокумент.МоментВремени,
	ВЫБОР
		КОГДА НаличиеПрисоединенныхФайлов.ЕстьФайлы ЕСТЬ NULL 
			ТОГДА 1
		КОГДА НаличиеПрисоединенныхФайлов.ЕстьФайлы
			ТОГДА 0
		ИНАЧЕ 1
	КОНЕЦ КАК ЕстьФайлы
ИЗ
	Документ.БСП_НовыйДокумент КАК ДокументБСП_НовыйДокумент
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеПрисоединенныхФайлов КАК НаличиеПрисоединенныхФайлов
		ПО ДокументБСП_НовыйДокумент.Ссылка = НаличиеПрисоединенныхФайлов.ОбъектСФайлами

В форму списка добавим колонку «ЕстьФайлы» и изменим настройки отображения.

Наличие прикрепленных файлов

7. Тестирование.

Запускаем режим «1С:Предприятие» и с помощью обработки из набора внешних обработок библиотеки стандартных подсистем «ИнструментыРазработчикаОбновлениеВспомогательныхДанных.epf» обновляем наши новые данные.

Обновление вспомогательных данных

Список документов
Список документов с прикрепленными файлами

Форма документа
Кнопка "Файлы"

Прикрепленный файл
Прикрепленный файл документа

Популярность: 29%

Запись опубликована в рубрике Настройка и оптимизация с метками БСП. Добавьте в закладки постоянную ссылку.

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка пола при пгд
  • Ошибка подушки безопасности тигуан 2019
  • Ошибка пола на первом скрининге форум
  • Ошибка покупки на tm что делать

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии