Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6827-й день

Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua

 1С Предприятие 7.7, программирование

selesta
Mar 28 2007, 16:12
  
Пост #1

Благодарности: 45811

Репутация:   811  
Honey bear
***

Группа: Пользователи
Сообщений: 1 352
С нами с: 17-March 06
Меценат


1С Предприятие 7.7


Обсуждаем вопросы по программированию в 1С 7.7.
Буду рад помочь Вам ответами на вопросы.


1С Предприятие 7.7, программирование (помощь по 1С 7.7) - http://forum.0day.kiev.ua/index.php?showtopic=28749
1С Предприятие 8.х, Программирование и другие вопросы (помощь по 1С 8.х) - http://forum.0day.kiev.ua/index.php?showtopic=95141
Текущие релизы украинских конфигураций и форм отчетности - http://1c.abbyy.ua/content/view/634/163/
Техническая поддержка на сайте 1С.RU (последние обновления) - http://www.1c.ru/ukraina/support/release.jsp


Софт ищем только здесь
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
23 Страницы  « < 7 8 9 10 11 > »   
Reply to this topicStart new topic
Ответов(160 - 179)
maxell
Dec 22 2009, 14:24
  
Пост #161



Репутация:   60  
Дух


Группа: Пользователи
Сообщений: 185
С нами с: 22-August 09


Привет всем, в 1с не силен crazy.gif подскажите как из одной базы в другую затащить справочник товаров.

7.7 бух-торговля-склад-кадры-зп
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
.::EclipsE::.
Dec 28 2009, 15:37
  
Пост #162



Репутация:   7  
Дух


Группа: Пользователи
Сообщений: 62
С нами с: 29-June 09


подскажите как из одной базы в другую затащить справочник товаров.

Поищи в нете обработку Универсал (universal.ert), думаю она тебе поможет smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
maxell
Dec 28 2009, 17:24
  
Пост #163



Репутация:   60  
Дух


Группа: Пользователи
Сообщений: 185
С нами с: 22-August 09


Спасибо!!!! biggrin.gif уже перетащил yes.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
fli
Jan 1 2010, 12:52
  
Пост #164



Репутация:   125  
Постоялец
***

Группа: Пользователи
Сообщений: 1 640
С нами с: 12-November 07


Хелп. В модуле формы документа выдает ошибку на строке

УстановитьЗначение(1, Дисципліна,"Всього");

УстановитьЗначение<<?>>(1, Дисципліна,"Всього");
{Документ.рнп.Форма.Модуль(14)}: Процедура не обнаружена (УстановитьЗначение)
При проверке модуля обнаружены синтаксические ошибки!


Сообщение отредактировал fli - Jan 1 2010, 12:53
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
fli
Jan 4 2010, 11:08
  
Пост #165



Репутация:   125  
Постоялец
***

Группа: Пользователи
Сообщений: 1 640
С нами с: 12-November 07


И еще вопрос, как в таблицу(форма для печати документа) вывести значения табличной части документа? у меня выводиться только выделенная строка.

подскажите плз.
UPD
разобрался:

j=0;
пока i<>j цикл
j=j+1;
ПолучитьСтрокуПоНомеру(j);
Таб.ВывестиСекцию("Дисципліни");
конеццикла ;

Сообщение отредактировал fli - Jan 4 2010, 22:02
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
fli
Jan 6 2010, 10:46
  
Пост #166



Репутация:   125  
Постоялец
***

Группа: Пользователи
Сообщений: 1 640
С нами с: 12-November 07


(fli @ Jan 1 2010, 12:52) Перейти к цитате

Хелп. В модуле формы документа выдает ошибку на строке

УстановитьЗначение(1, Дисципліна,"Всього");

УстановитьЗначение<<?>>(1, Дисципліна,"Всього");
{Документ.рнп.Форма.Модуль(14)}: Процедура не обнаружена (УстановитьЗначение)
При проверке модуля обнаружены синтаксические ошибки!



блин, роздуплился, что надо было задать переменную:

перем ТабЗнач;
процедура приоткрытии();
ТабЗнач = СоздатьОбъект("ТаблицаЗначений");
конецпроцедуры
процедура уст();
ТабЗнач.УстановитьЗначение(2,2,"123");
конецпроцедуры


но фак, теперь пишет
Номер за пределами значения

хотя хз, откуда оно знает что табличная часть документа это переменная Таб !?
подскажите как правильно, не могу роздуплиться

Сообщение отредактировал fli - Jan 6 2010, 11:48
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mhts
Jan 6 2010, 14:42
  
Пост #167



Репутация:   2  
Дух


Группа: Пользователи
Сообщений: 20
С нами с: 2-November 09


(fli @ Jan 6 2010, 10:46) Перейти к цитате

блин, роздуплился, что надо было задать переменную:

перем ТабЗнач;
процедура приоткрытии();
ТабЗнач = СоздатьОбъект("ТаблицаЗначений");
конецпроцедуры
процедура уст();
ТабЗнач.УстановитьЗначение(2,2,"123");
конецпроцедуры


но фак, теперь пишет
Номер за пределами значения

хотя хз, откуда оно знает что табличная часть документа это переменная Таб !?
подскажите как правильно, не могу роздуплиться


А никто и не знает, что табличная часть документа это переменная ТабЗнач!
Создан пустой объект типа ТаблицаЗначений, без колонок и строк.
Потом пытаешься установить в эту таблицу какое-то значение в строку 2 колонки 2,
А пределы значений: строк - 0, колонок - тоже 0
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
fli
Jan 6 2010, 15:38
  
Пост #168



Репутация:   125  
Постоялец
***

Группа: Пользователи
Сообщений: 1 640
С нами с: 12-November 07


(mhts @ Jan 6 2010, 14:42) Перейти к цитате

А никто и не знает, что табличная часть документа это переменная ТабЗнач!
Создан пустой объект типа ТаблицаЗначений, без колонок и строк.
Потом пытаешься установить в эту таблицу какое-то значение в строку 2 колонки 2,
А пределы значений: строк - 0, колонок - тоже 0

тада...
а какая переменная отвечает за табл.часть документа?
в синтаксис-помощнике так:УстановитьЗначение(<Строка>,<Колонка>,<Знач>)
но так не робе
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mhts
Jan 6 2010, 16:12
  
Пост #169



Репутация:   2  
Дух


Группа: Пользователи
Сообщений: 20
С нами с: 2-November 09


(fli @ Jan 6 2010, 15:38) Перейти к цитате

тада...
а какая переменная отвечает за табл.часть документа?
в синтаксис-помощнике так:УстановитьЗначение(<Строка>,<Колонка>,<Знач>)
но так не робе


Никакая не отвечает.
Напиши, чего добиваешься-то?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
fli
Jan 6 2010, 16:42
  
Пост #170



Репутация:   125  
Постоялец
***

Группа: Пользователи
Сообщений: 1 640
С нами с: 12-November 07


(mhts @ Jan 6 2010, 16:12) Перейти к цитате

Никакая не отвечает.
Напиши, чего добиваешься-то?

Хочу программно установить определенное значение конкретным ячейкам в таблице документа))))

Сообщение отредактировал fli - Jan 6 2010, 16:57
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mhts
Jan 6 2010, 16:53
  
Пост #171



Репутация:   2  
Дух


Группа: Пользователи
Сообщений: 20
С нами с: 2-November 09


Так, к слову... Может, кому пригодится...
Обнаружил каку-бяку в 7.7 при работе со списком значений.

Тривиально проверяю дубли строк в документе:

//============================
Процедура УбратьДублиТоваров(Док)
табл1 = СоздатьОбъект("ТаблицаЗначений");
спЕстьВДоке = СоздатьОбъект("СписокЗначений");
Док.ВыгрузитьТабличнуюЧасть(табл1);
Док.УдалитьСтроки();
Поз = 1;
Пока Поз<=табл1.КоличествоСтрок() Цикл
табл1.ПолучитьСтрокуПономеру(Поз);
Если спЕстьВДоке.Принадлежит(табл1.ТМЦ)=1 Тогда
табл1.УдалитьСтроку();
Иначе
спЕстьВДоке.ДобавитьЗначение(табл1.ТМЦ);
Поз = Поз + 1;
КонецЕсли;
КонецЦикла;
Док.ЗагрузитьТабличнуюЧасть(табл1);
КонецПроцедуры

При количестве строк в документе порядка 1000 обрабатывает около 1 минуты!

Заменяем .Принадлежит() на .НайтиЗначение() :

//============================
Процедура УбратьДублиТоваров(Док)
табл1 = СоздатьОбъект("ТаблицаЗначений");
спЕстьВДоке = СоздатьОбъект("СписокЗначений");
Док.ВыгрузитьТабличнуюЧасть(табл1);
Док.УдалитьСтроки();
Поз = 1;
Пока Поз<=табл1.КоличествоСтрок() Цикл
табл1.ПолучитьСтрокуПономеру(Поз);
Если спЕстьВДоке.НайтиЗначение(табл1.ТМЦ)>0 Тогда
табл1.УдалитьСтроку();
Иначе
спЕстьВДоке.ДобавитьЗначение(табл1.ТМЦ);
Поз = Поз + 1;
КонецЕсли;
КонецЦикла;
Док.ЗагрузитьТабличнуюЧасть(табл1);
КонецПроцедуры

Теперь все отрабатывает за 1 - 2 секунды!!!

Вывод: Проверку на вхождение в большой список значений желательно делать методом "НайтиЗначение()". Проверку методом "Принадлежит()" надо использовать, если в списке присутствуют группы справочника. Тогда "НайтиЗначение()" может не найти анализируемый элемент справочника, входящий в группу из списка...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mhts
Jan 6 2010, 17:11
  
Пост #172



Репутация:   2  
Дух


Группа: Пользователи
Сообщений: 20
С нами с: 2-November 09


(fli @ Jan 6 2010, 16:42) Перейти к цитате

Хочу установить определенное значение конкретным ячейкам в таблице документа))))


В модуле формы документа?
"Конкретные ячейки в таблице документа" называются реквизитами табличной части.
Например, такие: Товар, Кво, Сумма.

Можно так:
Если ПолучитьСтрокуПоНомеру(КакойТоНомер)=1 Тогда
Товар = КакойТоТовар;
Кво = 5;
Сумма = 10;
КонецЕсли;

Это если в документе уже есть строка с номером КакойТоНомер...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
fli
Jan 6 2010, 17:34
  
Пост #173



Репутация:   125  
Постоялец
***

Группа: Пользователи
Сообщений: 1 640
С нами с: 12-November 07


(mhts @ Jan 6 2010, 17:11) Перейти к цитате

В модуле формы документа?
....
Это если в документе уже есть строка с номером КакойТоНомер...

да, в модуле формы
Э неее,документ то пуст! )))
У меня эта процедура установкизначения должна выполняться при создании/редактировании
документа!

Сообщение отредактировал fli - Jan 6 2010, 17:37
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mhts
Jan 6 2010, 17:56
  
Пост #174



Репутация:   2  
Дух


Группа: Пользователи
Сообщений: 20
С нами с: 2-November 09


(fli @ Jan 6 2010, 17:34) Перейти к цитате

да, в модуле формы
Э неее,документ то пуст! )))
У меня эта процедура установкизначения должна выполняться при создании/редактировании
документа!


Ну, тада надо строки вводить в процедуре...
Можно перескочить на таблицу значений, если прямо так это необходимо:

ТЗ = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТЗ);
УдалитьСтроки();

// Теперь документ у нас точно пустой, а все, что в нем было - в таблице значений
// дальше делаем с этой таблицей все, что можно делать с таблицами значений:
// добавляем - удаляем строки, сортируем, устанавливаем значения в ячейках и т.д.
// в конце - запихиваем все это в документ:

ЗагрузитьТабличнуюЧасть(ТЗ);
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
fli
Jan 6 2010, 18:02
  
Пост #175



Репутация:   125  
Постоялец
***

Группа: Пользователи
Сообщений: 1 640
С нами с: 12-November 07


(mhts @ Jan 6 2010, 17:56) Перейти к цитате

Ну, тада надо строки вводить в процедуре...
Можно перескочить на таблицу значений, если прямо так это необходимо:

ТЗ = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТЗ);
УдалитьСтроки();

// Теперь документ у нас точно пустой, а все, что в нем было - в таблице значений
// дальше делаем с этой таблицей все, что можно делать с таблицами значений:
// добавляем - удаляем строки, сортируем, устанавливаем значения в ячейках и т.д.
// в конце - запихиваем все это в документ:

ЗагрузитьТабличнуюЧасть(ТЗ);

спасибо,попробую good2.gif
но как же тогда использовать процедуру УстановитьЗначение?
знаю, что из-за какой-то мелочи она не хочет работать dash2.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mhts
Jan 8 2010, 10:15
  
Пост #176



Репутация:   2  
Дух


Группа: Пользователи
Сообщений: 20
С нами с: 2-November 09


(fli @ Jan 6 2010, 18:02) Перейти к цитате

спасибо,попробую good2.gif
но как же тогда использовать процедуру УстановитьЗначение?
знаю, что из-за какой-то мелочи она не хочет работать dash2.gif

Из-за такой мелочи:
метод УстановитьЗначение(<НомСтр>,<Колонка>,<Знач>) позволяет установить значение в уже существующую ячейку, если строки с номером НомСтр у ТЗ еще нет, тогда и будет что-то типа "Номер за пределами значений"...

Не знаю, чего ты хочешь добиться таким нестандартным способом заполнения табличной части, но принципиально вот так для предыдущего примера:

// Изначально документ пустой
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТЗ);
УдалитьСтроки();
// Вводим 10 новых строк в ТЗ
Для сч = 1 по 10 Цикл
ТЗ.НоваяСтрока();
КонецЦикла;

//Устанавливаем значения ячеек, учитывая ячейку "НомерСтрокиДокумента"
Для сч = 1 по 10 Цикл
ТЗ.УстановитьЗначение(сч, "НомерСтрокиДокумента", сч);
ТЗ.УстановитьЗначение(сч, "Товар", КакойТоТовар);
ТЗ.УстановитьЗначение(сч, "Кво", сч);
ТЗ.УстановитьЗначение(сч, "Сумма", сч * 10);
КонецЦикла;

// Заполняем документ
ЗагрузитьТабличнуюЧасть(ТЗ);

В итоге получаем в табличной части 10 строчек, заполненных одним и тем же товаром с разными количествами и суммами.
Пример просто для примера, прикладного смысла не имеет.
Если поподробнее опишешь свою задачу - можно ближе к теме нарисовать...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
fli
Jan 8 2010, 11:21
  
Пост #177



Репутация:   125  
Постоялец
***

Группа: Пользователи
Сообщений: 1 640
С нами с: 12-November 07


Задание примерно такое(это весь модуль формы)

процедура тест();
если НайтиЗначение("555",i,j) тогда
УстановитьЗначение(i+1,j+1,"666")
конецесли
конецпроцедуры

Прикол в том что НайтиЗначение тоже не работает -Процедура не обнаружена (НайтиЗначение)
И это, у меня не получаеться привязать переменную ТЗ к табличной части, вернее не знаю как.
Я потом удалил ее нафик, вставил в форму новую таблицу значений, в свойствах указал идентификатор ТЗ - нефига, она не поддаеться редактированию ни програмно, ни в режиме ввода данных - пустая и все))
да и вообще, не могу понять, зачем создавать програмно новую табличную часть, если уже есть готовая, тем более у меня там почти почти 20 реквизитов(а это геммор все прописывать вручную))).
короче,хз, я полный нюб_)))
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mhts
Jan 8 2010, 13:16
  
Пост #178



Репутация:   2  
Дух


Группа: Пользователи
Сообщений: 20
С нами с: 2-November 09


(fli @ Jan 8 2010, 11:21) Перейти к цитате

Задание примерно такое(это весь модуль формы)

процедура тест();
если НайтиЗначение("555",i,j) тогда
УстановитьЗначение(i+1,j+1,"666")
конецесли
конецпроцедуры

Прикол в том что НайтиЗначение тоже не работает -Процедура не обнаружена (НайтиЗначение)
И это, у меня не получаеться привязать переменную ТЗ к табличной части, вернее не знаю как.
Я потом удалил ее нафик, вставил в форму новую таблицу значений, в свойствах указал идентификатор ТЗ - нефига, она не поддаеться редактированию ни програмно, ни в режиме ввода данных - пустая и все))
да и вообще, не могу понять, зачем создавать програмно новую табличную часть, если уже есть готовая, тем более у меня там почти почти 20 реквизитов(а это геммор все прописывать вручную))).
короче,хз, я полный нюб_)))

Понял, наконец, в чем твое заблуждение! Ты пытаешься работать с табличной частью документа как с объектом ТаблицаЗначений. Табличная часть документа ЭТО НЕ ТАБЛИЦА ЗНАЧЕНИЙ!!! Методы Таблицы значений тут не работают и поиска такого удобного тут нет!

Поэтому надо так:

процедура тест()
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТЗ);
i = 0; j = 0;
если ТЗ.НайтиЗначение("555",i,j) тогда
ТЗ.УстановитьЗначение(i+1,j+1,"666");
УдалитьСтроки();
ЗагрузитьТабличнуюЧасть(ТЗ);
конецесли
конецпроцедуры

И то в таком виде если получится так, что i - это последняя строка документа или j - это последняя колонка - опять тебе будет та же ошибка при попытке чего-то установить в i+1,j+1
Какие-то еще проверки надо впихнуть, типа так:

****************
если ТЗ.НайтиЗначение("555",i,j) тогда
Если ((i<ТЗ.КоличествоСтрок()) и (j<ТЗ.КоличествоКолонок())) Тогда
ТЗ.УстановитьЗначение(i+1,j+1,"666");
УдалитьСтроки();
ЗагрузитьТабличнуюЧасть(ТЗ);
конецесли
конецесли
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
fli
Jan 8 2010, 17:53
  
Пост #179



Репутация:   125  
Постоялец
***

Группа: Пользователи
Сообщений: 1 640
С нами с: 12-November 07


Респект и уважуха! терь все ясно
а еще вопрос, как правильно обращаться к атрибуту табл.части типа ПЕРЕЧИСЛЕНИЕ? например если нужно получить его текущее значение?
вот например:
abc=ТипКонтроля;
в поле abc мне выводиться какое то число,наверное код этого перечисления, а как получить именно его значение?
ПС:
ТипКонтроля - атрибут типа перечисление, имеет два занчения- "Зачет" и "Экзамен", так нужно посчитать количевство значений "Экзамен" в таблице.
Посчитать это я запросто, а прочитать значение хз как)))

Сообщение отредактировал fli - Jan 8 2010, 18:01
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
mhts
Jan 11 2010, 17:14
  
Пост #180



Репутация:   2  
Дух


Группа: Пользователи
Сообщений: 20
С нами с: 2-November 09


(fli @ Jan 8 2010, 17:53) Перейти к цитате

как правильно обращаться к атрибуту табл.части типа ПЕРЕЧИСЛЕНИЕ? например если нужно получить его текущее значение?
вот например:
abc=ТипКонтроля;
в поле abc мне выводиться какое то число,наверное код этого перечисления, а как получить именно его значение?
ПС:
ТипКонтроля - атрибут типа перечисление, имеет два занчения- "Зачет" и "Экзамен", так нужно посчитать количевство значений "Экзамен" в таблице.
Посчитать это я запросто, а прочитать значение хз как)))


Попробуй запусти в модуле формы:

Процедура Тест()
Перем ТК;
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
ТК = ТипКонтроля;
Сообщить("Строка № "+СокрЛП(НомерСтроки)+" => Тип контроля = "+ТК);
КонецЦикла;
КонецПроцедуры

Сообщит оно тебе по каждой заполненной строке твои зачеты и экзамены.

Ты не полностью проблему описываешь, догадываться приходится, что у тебя скорее всего "поле abc" - это или реквизит шапки документа или реквизит диалога на форме документа. Посмотри, какой тип у этого реквизита назначен. Если строка или число - так и будет ерунда какая-нибудь выводится.
При выполнении abc=ТипКонтроля происходит неявное преобразование типа перечисление к типу поля abc. Как умеет так и преобразовывает.
Если назначишь этому полю тип Перечисление.ТипыКонтроля (или как оно у тебя там в конфигураторе называется?), тогда abc=ТипКонтроля сработает нормально. Если назначишь ему тип "Строка", тогда надо писать что-то такое:
abc=СокрЛП(ТипКонтроля),
какую-нибудь функцию явного преобразования к строке. Можно так:
abc=Строка(ТипКонтроля)
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

23 Страницы  « < 7 8 9 10 11 > » 
Reply to this topicStart new topic

 



- Упрощённая версия
Сейчас: 23rd November 2024 - 10:38
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст.