Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 348
от 15.11.2006, 22:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 305, Экспертов: 48
В номере:Вопросов: 7, Ответов: 23


Вопрос № 62010: Здравствуйте! Подскажите пожалуйста кто может: как сделать. чтобы в справочнике Номенклатура выводился только товар с ненулевыми остатками либо сразу, либо по нажатии кнопки. Форма списка имеет следующие столбцы: код, наименование, ед.изм., остаток; ...
Вопрос № 62029: Добрый день! Подскажите, можно ли как-то програмно, без применения внешних компонент по определенному сигналу(нажатие кнопки или заданное врем) завершить работу системы ВСЕХ пользователей кроме подавшего сигнал. Заранее спасибо!...
Вопрос № 62034: Здравствуйте!!! Уважаемые эксперты. Подскажите, пожалуйста, как узнать номер квартала в 1с 7.7...
Вопрос № 62036: Здравствуйте!!! Можно ли в 1с 7.7 сделать окошко с вводом пароля, т.е. когда пользователь вводит строку, чтоб там были не вводимые им символы, а ************** ?...
Вопрос № 62039: Привет! Есть конфа УПП. В ней есть документ Платежное ПоручениеИсходящее, в свойствах документа есть список документов, на основе которых может создаваться документ ПлатежноеПоручение. Создаю свой документ ЗаявкаНаОплату, добавляю в вы...
Вопрос № 62042: Здравствуйте Уважаемые эксперты. При загрузке данных в 1С из Microsoft Excel выводит ошибку Спр.Записать(); {Документ.ПрихНакл.Форма.Модуль(51)}: Не определена дата! Элемент не может быть записан! что делать? ...
Вопрос № 62050: Как выбрать из базы 1С 7.7 все документы (например расходные накладные) но так чтобы выводился каждый документ, а не склеивался не по датам не по контрагенту? Спасибо....

Вопрос № 62.010
Здравствуйте! Подскажите пожалуйста кто может: как сделать. чтобы в справочнике Номенклатура выводился только товар с ненулевыми остатками либо сразу, либо по нажатии кнопки. Форма списка имеет следующие столбцы: код, наименование, ед.изм., остаток; где Остаток-НЕ реквизит справочника, а текст с формулой ОстатокТовараНаСкладе().(см.примечание). Заранее спасибо, очень поможете.

Приложение:

Отправлен: 09.11.2006, 23:19
Вопрос задал: Darina (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Elric
Здравствуйте, Darina!

В любой форме списка справочника (с любым набором колонок) можно применить метод ИспользоватьСписокЭлементов(). Т.е. делаете запрос, формируете список нужных Вам элементов справочника (например, как в Вашем случае, товары с ненулевым остатком) и применяете метод, в качестве параметра указывая сформированный список значений.
---------
Мирный атом в КАЖДЫЙ дом!
Ответ отправил: Elric (статус: Практикант)
Ответ отправлен: 10.11.2006, 03:01
Оценка за ответ: 4
Комментарий оценки:
Да, знаю, что можно создать запрос и применять метод ИспользоватьСписокЭлементов(), но что-то не получается. Задам другой вопрос.

Отвечает: Гребиников Павел Генадьевич
Здравствуйте, Darina!
Скорее всего, вы забыли
создатьобъект(справочник.Номенклатура) и потом "плясать" уже от него
---------
Плох тот юзер, который не мечтает стать админом...
Ответ отправил: Гребиников Павел Генадьевич (статус: 6-ой класс)
Ответ отправлен: 10.11.2006, 06:27

Отвечает: Ovr1970
Здравствуйте, Darina!
ИспользоватьСписокЭлементов работает, но многие почему-то не замечают, что он должен вызываться при каждом изменении родителя и содержать только список элементов из открытой группы. (Или корневой список)
Ответ отправил: Ovr1970 (статус: Студент)
Ответ отправлен: 10.11.2006, 17:59
Оценка за ответ: 3
Комментарий оценки:
Я уже решила эту проблему сама методом ИспользоватьСписокЭлементов(). Кому надо могу подсказать, пишите.


Вопрос № 62.029
Добрый день!
Подскажите, можно ли как-то програмно, без применения внешних компонент по определенному сигналу(нажатие кнопки или заданное врем) завершить работу системы ВСЕХ пользователей кроме подавшего сигнал.
Заранее спасибо!
Отправлен: 10.11.2006, 07:03
Вопрос задал: Зайцев Александр (статус: 10-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Шальков Павел Владимирович
Здравствуйте, Зайцев Александр!
Я бы предложил Вам извратиться так:
1. Создать константу - ИнициаторСобытия, куда будет помещаться имя пользователя, вызвавшего событие;
2. Создать процедуру в глобальном модуле, которая будет вызывать завершение работы пользователя с помощью процедуры ЗавершитьРаботуСистемы() при условии, что константа в пункте 1 заполнена и она не равна текущему пользователю;
3. В предопред. процедуре ПриНачалеРаботыСистемы() создать обработчик ожидания на процедуру в пункте 2; а также установку константы в пункте 1 в пустую строку.
Все... потом, чтоб завершить всех остальных, вы просто заполняете константу.
Ответ отправил: Шальков Павел Владимирович (статус: 9-ый класс)
Ответ отправлен: 10.11.2006, 07:27
Оценка за ответ: 4
Комментарий оценки:
Это не сработает, если у кого-то остался открытым не записанный документ, а необходимо закрыть в любом случае

Отвечает: Vizli
Здравствуйте, Зайцев Александр!

у 1с есть методическая конфа (идет на дисках ИТС) в нем есть такая обработка - завершение работы пользователей и куча прочих программных фич.

механизм таков - есть константа
Константа.СообщениеНеобходимостиЗавершения (тип текст)

в гл. модуле процедура в процедуре ПриНачалеРаботыСистемы() вызывается ОбработкаОжидания("ПроцессОбработкиОжиданияДиспетчера",120) а в процедуре ПроцессОбработкиОжиданияДиспетчера() есть код:
Если ПустаяСтрока(Константа.СообщениеНеобходимостиЗавершения)=0 Тогда
// обрабативается показ сообщенияКонстанта.СообщениеНеобходимостиЗавершения
// и завершается работа системы
ЗавершитьРаботуСистемы();
КонецЕсли;

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

Ответ отправил: Vizli (статус: 3-ий класс)
Ответ отправлен: 10.11.2006, 07:43
Оценка за ответ: 4
Комментарий оценки:
См. комментарий к предыдущему ответу

Отвечает: Elric
Здравствуйте, Зайцев Александр!

Учитывая комментарии к предыдущим ответам, такой возможности однозначно нет.

P.S. Закрытие 1С при незаписанных справочниках или документах явление опасное.
---------
Мирный атом в КАЖДЫЙ дом!
Ответ отправил: Elric (статус: Практикант)
Ответ отправлен: 10.11.2006, 11:40
Оценка за ответ: 2
Комментарий оценки:
Как оказалось есть

Отвечает: Netizen
Здравствуйте, Зайцев Александр!
Можно 100%. Есть определенные внутренние команды, сейчас не помню ну типа "ЗавершитьРаботуПользователя".
Ответ отправил: Netizen (статус: Студент)
Ответ отправлен: 10.11.2006, 12:06


Вопрос № 62.034
Здравствуйте!!!
Уважаемые эксперты. Подскажите, пожалуйста, как узнать номер квартала в 1с 7.7
Отправлен: 10.11.2006, 08:05
Вопрос задал: Гребиников Павел Генадьевич (статус: 6-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зайцев Александр
Здравствуйте, Гребиников Павел Генадьевич!

НомерКвартала=(ДатаМесяц(НачКвартала(ТекущаяДата()))+2)/3;
Ответ отправил: Зайцев Александр (статус: 10-ый класс)
Ответ отправлен: 10.11.2006, 08:15

Отвечает: Шальков Павел Владимирович
Здравствуйте, Гребиников Павел Генадьевич!
Можно использовать выражение типа:
НомерКвартала = Цел((ДатаМесяц(<Дата>)-1)/3)+1;
Ответ отправил: Шальков Павел Владимирович (статус: 9-ый класс)
Ответ отправлен: 10.11.2006, 08:16
Оценка за ответ: 5

Отвечает: Игорь К.
Здравствуйте, Гребиников Павел Генадьевич!

ДатаМесяц(КонКвартала(Дат+30*ш))/3;

Удачи
Ответ отправил: Игорь К. (статус: 1-ый класс)
Ответ отправлен: 10.11.2006, 08:40


Вопрос № 62.036
Здравствуйте!!!
Можно ли в 1с 7.7 сделать окошко с вводом пароля, т.е. когда пользователь вводит строку, чтоб там были не вводимые им символы, а ************** ?
Отправлен: 10.11.2006, 08:32
Вопрос задал: Гребиников Павел Генадьевич (статус: 6-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Besker
Здравствуйте, Гребиников Павел Генадьевич!
В свойствах поля ввода на закладке дополнительно, установите галочку для ввода пароля.
---------
Жизнь игра, а настоящая игра - МАНИЯ.
Ответ отправил: Besker (статус: Студент)
Ответ отправлен: 10.11.2006, 08:39

Отвечает: Шальков Павел Владимирович
Здравствуйте, Гребиников Павел Генадьевич!
в свойствах поля ввода на закладке дополнительно установите галочку для ввода пароля. Удачи!
Ответ отправил: Шальков Павел Владимирович (статус: 9-ый класс)
Ответ отправлен: 10.11.2006, 08:45


Вопрос № 62.039
Привет!
Есть конфа УПП. В ней есть документ Платежное ПоручениеИсходящее, в свойствах документа есть список документов, на основе которых может создаваться документ ПлатежноеПоручение.

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

Код:

ПлатежкаОбъект = Документы.ПлатежноеПоручениеИсходящее.СоздатьДокумент();
ПлатежкаОбъект.Заполнить(ЭтотОбъект.Ссылка);
ПлатежкаОбъект.Организация = Справочники.Организации.НайтиПоКоду("00001");
ПлатежкаОбъект.Дата = ТекущаяДата();
ПлатежкаОбъект.Контрагент = ЭтотОбъект.Контрагент;
ПлатежкаОбъект.ДокументОснование = ЭтотОбъект.Ссылка;
ПлатежкаОбъект.ДоговорКонтрагента = тотОбъект.Договор;
ПлатежкаОбъект.Контрагент = ЭтотОбъект.Контрагент;
ПлатФорм = ПлатежкаОбъект.ПолучитьФорму("ФормаДокумента");
ПлатФорм.Открыть();

После сохранения платежки смотрю подчиненнность документа - нефига он не подчинен документу, на основании которого создан.

Смотрел в дебагере в модуле объекта ПлатежноеПоручение есть фукция ОбработкаПроведения(Основание), вызываемая при вызове ПлатжкаОбъект.Заполнить(ЭтотОБъект.Ссылка). Там есть следующая строка

Код:

ДокументОснование = Основание.Ссылка;


я так понимаю она и отвечает за присвоение подчиненности документу. Но в дебагере при выполнении этой строки ничего не изменяется, т.е. реквизит ДокументОснование=Неопределено.

Пробовал проделывать то же самое со стандартными документами, указанными в списке ПлатежногоПоручения как документы на оснвании которых можно создавать документ. В частности пробовал с БюджетнойОперацией - здесь все ОК. Ссылка на документ основание создается.
Возникает нехорошее подозрение, что что-то не так с моим документом, но что понять не могу.
Отправлен: 10.11.2006, 09:15
Вопрос задал: Shadow586 (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Vizli
Здравствуйте, Shadow586!

дело в том, что реквизит ДокументОснование в документе ПлатежноеПоручениеИсходящее - составной, поэтому нужно добавить нужный документ (ЗаявкаНаОплату) в тип данных реквизита ДокументОснование. Тогда для дока ПлатежноеПоручениеИсходящее в структуре пождчиненности появится нужный док.
Ответ отправил: Vizli (статус: 3-ий класс)
Ответ отправлен: 10.11.2006, 10:17
Оценка за ответ: 5
Комментарий оценки:
Понятно объяснили. Заочно ставлю "отлично" и жду пример в минифорум. В 1С я начинающий, и мне надо все с примерами.


Вопрос № 62.042
Здравствуйте Уважаемые эксперты. При загрузке данных в 1С из Microsoft Excel
выводит ошибку Спр.Записать(); {Документ.ПрихНакл.Форма.Модуль(51)}: Не определена дата! Элемент не может быть записан!
что делать?

Приложение:

Отправлен: 10.11.2006, 09:37
Вопрос задал: Laziz (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зайцев Александр
Здравствуйте, Laziz M. Ismailov!
Попробуйте перед Спр.Записать; добавить строку
Спр.ИспользоватьДату(ТекущаяДата());
или переодические реквизиты (СтавкаНДС, НДС) определять с помощью метода НДС.Установить(ТекущаяДата(), Число(ПолучитьЗначение(Excel,i,7)));
Должно помочь
Ответ отправил: Зайцев Александр (статус: 10-ый класс)
Ответ отправлен: 10.11.2006, 09:50

Отвечает: Vizli
Здравствуйте, Laziz M. Ismailov!

проблема в том, что СтавкаНДС - периодический реквизит неправильно заполнен. Такие реквизиты нельзя заполнить простым присвоением, нужно использовать метод Установить():
Спр.СтавкаНДС.Установить(<Дата>,<Значение>)
Ответ отправил: Vizli (статус: 3-ий класс)
Ответ отправлен: 10.11.2006, 10:07

Отвечает: Гребиников Павел Генадьевич
Здравствуйте, Laziz M. Ismailov!
Такая ошибка обычно выходит когда если у справочника есть периодический реквизит(реквизит со значением на указанную дату), а вы не указываете дату, на которую вы устанавливаете этот реквизит.
у вас в данном случае периодическим может быть либо ставкандс либо себестоимость
Посмотрите в конфигураторе.

Приложение:

---------
Плох тот юзер, который не мечтает стать админом...

Ответ отправил: Гребиников Павел Генадьевич (статус: 6-ой класс)
Ответ отправлен: 10.11.2006, 12:19

Отвечает: Краюшкин Игорь Валерьевич
Здравствуйте, Laziz M. Ismailov!

Скорее всего у Вас в справочнике используются периодические реквизиты. Чтобы небыло ошибок, надо использовать
Спр.ИспользоватьДату(ТекущаяДата());
Ответ отправил: Краюшкин Игорь Валерьевич (статус: 6-ой класс)
Ответ отправлен: 10.11.2006, 23:09

Отвечает: Karanskiy Arkadiy
Здравствуйте, Laziz M. Ismailov!
Эта ошибка выдается при записи периодических реквизитов. Для этого просто поставте Спр.ИспользоватьДату(РабочаяДата()) и ошибка исчезнет.
Успехов...
Ответ отправил: Karanskiy Arkadiy (статус: 5-ый класс)
Ответ отправлен: 11.11.2006, 20:16


Вопрос № 62.050
Как выбрать из базы 1С 7.7 все документы (например расходные накладные) но так чтобы выводился каждый документ, а не склеивался не по датам не по контрагенту? Спасибо.
Отправлен: 10.11.2006, 11:07
Вопрос задал: Mum (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зайцев Александр
Здравствуйте,
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|РасходнаяНакладная = Документ.РасходнаяНакладная.ТекущийДокумент;
|Группировка РасходнаяНакладная;
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
Пока Запрос.Группировка(1) = 1 Цикл
// Заполнение полей РасходнаяНакладная
Таб.ВывестиСекцию("РасходнаяНакладная");
КонецЦикла;
// Вывод заполненной формы
Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
Т.е. определяется групировка по документу, если хотите 'склеивать' по датам или по контрагенту то добавьте в запрос переменную (пр. дата = Документ.РасходнаяНакладная.ДатаДок) и групировка дата
Ответ отправил: Зайцев Александр (статус: 10-ый класс)
Ответ отправлен: 10.11.2006, 11:24

Отвечает: Elric
Здравствуйте, Mum!

В предыдущем ответе один маленький и легко обходимый, но все же недостаток -- необходимо выбирать период выборки. Чтобы выбрать вообще все накладные из базы см. Приложение.

Приложение:

---------
Мирный атом в КАЖДЫЙ дом!

Ответ отправил: Elric (статус: Практикант)
Ответ отправлен: 10.11.2006, 11:46

Отвечает: Гребиников Павел Генадьевич
Здравствуйте, Mum!
Док=создатьобъект(Документ.расходнаянаклданая);
Док.выбратьдокументы(дата1,дата2);
Пока док.получитьдокумент()=1 цикл
Сообщить(Док.номердок);
.....................
Конеццикла;

---------
Плох тот юзер, который не мечтает стать админом...
Ответ отправил: Гребиников Павел Генадьевич (статус: 6-ой класс)
Ответ отправлен: 10.11.2006, 12:12
Оценка за ответ: 5
Комментарий оценки:
а из таблицы документа как взять данные?

Отвечает: Краюшкин Игорь Валерьевич
Здравствуйте, Mum!

Док = СоздатьОбъект("Документ.хххх"); //где хххх - необходимый вид документа
Док.ВыбратьДокументы(НачальнаяДата, КонечнаяДата); //начальную и конечную даты можно не указывать, тогда выборка будет производиться с самого первого документа до самого последнего
Пока Док.ПолучитьДокумент() = 1 Цикл
//вот здесь в каждом проходе цикла переменная Док будет иметь значение необходимых документов
КонецЦикла;
Ответ отправил: Краюшкин Игорь Валерьевич (статус: 6-ой класс)
Ответ отправлен: 10.11.2006, 23:16

Отвечает: Karanskiy Arkadiy
Здравствуйте, Mum!
Док = СоздатьОбъект("Документа.РасходнаяНакладная");
Док.ВыбратьДокументы(Дата1, Дата2);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.Проведен()=0 Тогда Продолжить; КонецЕсли;
//Здесь можно обращаться к любому реквизиту документа
КонецЕсли;
Успехов...
Ответ отправил: Karanskiy Arkadiy (статус: 5-ый класс)
Ответ отправлен: 11.11.2006, 20:12
Оценка за ответ: 5
Комментарий оценки:
а из талицы почемуто не берет данные?


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное